Skip to main content
Items belong to a menu and are managed from the menu detail page (e.g. /admin/menus/{id}). The detail page displays items in tree order — root items first, then their children in position order — giving you a visual representation of the rendered menu hierarchy.

Item types

Every item has a type that controls how it is rendered in the frontend menu:
TypeDescription
LinkA clickable item. Set a route name (with optional route parameters) or a direct URL.
SectionA label-only item, not a link. Used as a group header. Can still have children with a collapse toggle when nested_collapsible is enabled on the menu.

Creating an item

1

Open the new item form

Click Add item on the menu detail page. The form opens in a modal.
2

Fill in the definition fields

The creation form shows the definition panel (pencil):
FieldDescription
TypeLink or Section.
LabelDefault label for the item.
Per-locale labelsTranslation fields for each locale configured in locales.
IconOptional icon identifier, e.g. bootstrap-icons:gear.
PositionInteger sort order among siblings. Lower values appear first.
ParentThe parent item, or ”— Root —” for a top-level item.
3

Save

Click Save. New items are appended at the end of their sibling group if no explicit position is given.
After saving, you can edit the item’s configuration (gear panel) to set the permission key, link settings, and parent.

Adding a child item

You can add a child directly from any existing item row using the Add child button. The child form is a simplified modal that:
  • Fixes the item type to Link.
  • Shows only the label and per-locale translation fields (no icon or position fields).
  • Pre-sets the parent to the item you clicked.
This is the fastest way to build a hierarchy without navigating away from the detail page.

Editing an item

Two edit buttons are available on each item row:

Definition (pencil)

Edits the identity fields:
  • Label and per-locale translations
  • Icon
  • Type (Link or Section)

Configuration (gear)

Edits the structural and link fields:
FieldDescription
ParentMove the item to a different parent or to root.
PositionInteger ordering among siblings. Items are sorted ascending.
Permission keyOptional string checked by the permission checker to decide visibility.
Link typeRoute name + params, or direct URL (Link items only).
Route nameSymfony route name for internal links.
Route paramsJSON object of route parameters, e.g. {"id": 42}.
URLDirect URL for external links.
Open in new tabWhether the link opens with target="_blank".
When you change the parent in the configuration panel and save, the item is appended at the end of its new sibling group automatically.

Hierarchy and depth

Any item can be a parent — there is no hard limit on nesting depth in the database. The depth limit set on the menu controls how many levels are rendered in the frontend, not how many can be stored. The dashboard table shows items in depth-first tree order: a parent is followed immediately by all its children (and their children), before the next sibling appears.

Reordering items

Use the Move up and Move down arrow buttons on each item row to swap its position with the adjacent sibling. Position values are swapped in the database. You can also set position values directly via the configuration (gear) panel.

Deleting an item

Click Delete on an item row. A confirmation modal is shown. Deleting an item removes it and all its descendants from the database (cascade delete).
Deletion is permanent. Descendants are removed together with the parent — there is no automatic re-parenting.