Skip to main content
The Nowo Dashboard Menu Bundle ships with a built-in admin interface for managing menus without writing any code. You can list menus, create or edit their definitions and configurations, manage items, copy menus between environments, and export or import menus as JSON.

Enabling the dashboard

The dashboard is disabled by default. Enable it in your bundle config:
config/packages/nowo_dashboard_menu.yaml
nowo_dashboard_menu:
    dashboard:
        enabled: true
Then import the dashboard routes in your app routing config, setting the URL prefix you want:
config/routes.yaml
nowo_dashboard_menu_dashboard:
    resource: '@NowoDashboardMenuBundle/Resources/config/routes_dashboard.yaml'
    prefix: /admin/menus
The dashboard will be available at /admin/menus (or whichever prefix you choose).
The path_prefix config key under dashboard: is deprecated. Set the prefix directly in your routing file as shown above.

Restricting access

To require a specific role for all dashboard routes, set required_role:
config/packages/nowo_dashboard_menu.yaml
nowo_dashboard_menu:
    dashboard:
        enabled: true
        required_role: ROLE_ADMIN
This requires Symfony SecurityBundle. Leave required_role as null (the default) to rely on your app’s access_control rules or firewall configuration instead.

Features

List menus

Browse all menus with a search filter and pagination. Each menu shows its code, name, context, and item count.

Create and edit menus

Set the code, name, optional context (JSON), icon, permission checker, depth limit, collapsible options, and CSS classes.

Manage items

Add, edit, reorder, and delete items. Items are displayed in tree order showing parent–child relationships.

Copy menus

Duplicate a menu and all its items under a new code. Useful for scaffolding environment-specific or partner-specific menus.

Export and import JSON

Export one menu or all menus as a JSON file. Import JSON files with a Skip existing or Replace strategy.

Form panels: definition vs. configuration

Menu and item forms are split into two panels to keep the most-used fields accessible:
PanelIconWhat it contains
DefinitionPencilCode, name, context, icon (for menus); type, icon, labels (for items)
ConfigurationGearPermission checker, depth limit, collapsible options, CSS classes (for menus); position, parent, link settings, permission key (for items)
When you create a new menu or item, only the definition panel is shown. After saving, you can open the configuration panel via the gear button.

Post-action redirect

After any successful action (create, update, delete, copy, move, or import), the dashboard redirects to the Referer header when it is same-origin. Otherwise it redirects to the relevant list or show page.

Pagination

The menu list is paginated by default. Configure pagination in your bundle config:
config/packages/nowo_dashboard_menu.yaml
nowo_dashboard_menu:
    dashboard:
        pagination:
            enabled: true   # set to false to load all menus at once
            per_page: 20    # default: 20
You can search menus using the search box at the top of the list. The search filter applies to menu codes and names.

Next steps

Managing menus

Learn how to create, edit, copy, and delete menus.

Managing items

Learn how to create, organize, and delete menu items.