| Surface | What it does |
|---|---|
| HTTP API | Fetch a menu tree as JSON for SPAs, React, or Vue frontends |
| Twig functions | Render menus in server-side Symfony templates |
| Twig filters | Transform icon identifiers inside templates |
| PHP interfaces | Extend the bundle with custom permission and code-resolution logic |
The
Menu and MenuItem Doctrine entities are not part of the public API. You receive them inside the tree arrays returned by Twig functions and the HTTP endpoint, but you should not instantiate or persist them directly in application code.HTTP API
GET /api/menu/{code}
Returns a JSON array of menu tree nodes for a given menu code. Supports locale and context-set query parameters.
Twig functions
dashboard_menu_tree
Load the full menu tree for a code, with optional permission context and context sets.
dashboard_menu_config
Retrieve render configuration (CSS classes, depth limit, icons, collapsible behaviour) for a menu.
dashboard_menu_href
Generate a URL from a
MenuItem object, with an optional Symfony URL reference type.Twig filters
dashboard_menu_icon_name
Resolves a full icon identifier (e.g.
bootstrap-icons:house) to the short form expected by the icon library (e.g. bi:house) using icon_library_prefix_map.PHP interfaces
MenuPermissionCheckerInterface
Implement to control per-item visibility based on roles, feature flags, or any custom logic. Auto-registered — no
services.yaml tag needed.MenuCodeResolverInterface
Implement to resolve which menu variant to load based on request attributes such as
operatorId or partnerId. Used by both the Twig functions and the HTTP endpoint.