wiredupdev / menu-manager-bundle
Menu manager provides easy way to create and organize menus in your applications.
Package info
github.com/wiredupdev/WudMenuManagerBundle
Type:symfony-bundle
pkg:composer/wiredupdev/menu-manager-bundle
Requires
- php: >=8.3
Requires (Dev)
- friendsofphp/php-cs-fixer: v3.86.0
- phpunit/phpunit: ^11.0 | ^12.0
- symfony/asset-mapper: 7.3.*
- symfony/framework-bundle: ^6.3|^7.0
- symfony/security-bundle: ^8.0
- symfony/twig-bundle: ^6.3|^7
- symfony/yaml: ^7.3
This package is auto-updated.
Last update: 2026-05-18 23:50:05 UTC
README
Menu manager bundle provides easy way to create and organize menus in your symfony applications.
Installation
composer require wiredupdev/menu-manager-bundle
Config symfony
<?php
// aplication-folder/config/bundles.php
return [
//...
Wiredupdev\MenuManagerBundle\WudMenuManagerBundle::class => ['all' => true]
];
Creating menu class
Class must implement __invoke method.
<?php
//...
use Wiredupdev\MenuManagerBundle\Menu\Item;
use Wiredupdev\MenuManagerBundle\Menu\Manager;
class AppMenu
{
public function __construct(
private MenuFactory $menuFactory,
) {
}
public function __invoke(): MenuItemInterface
{
return $this->menuFactory->create('main_menu_site', [
'attributes'=> [
'security'=> [
'roles'=> [
'ROLE_USER',
]
]
],
'children' => [
[
'label' => 'Home',
'uri' => [
'link' => 'https://www.example.com/home',
],
'id' => 'home',
],
[
'label' => 'About us',
'uri' => [
'route'=> [
'name'=> 'app.aboutus',
'parameters => [] // optional
]
],
'id' => 'about_us',
],
],
]);
}
Config service
Menu class must register with tag wud_menu_manager.menus
services:
App\Menu\AppMenu:
tags:
- { name: wud_menu_manager.menus }
Menu item processor
Processor component run individual process when iterates through menu items.
To register custom processes you need to add tag wud_menu_manager.processes to your service and implement
Wiredupdev\MenuManagerBundle\Menu\Processor\ProcessInterface.
services:
App\Menu\Processor\ExampleProcess:
tags:
- { name: wud_menu_manager.processes }
//..
use Wiredupdev\MenuManagerBundle\Menu\ProcessInterface;
class ExampleProcess implements ProcessInterface
{
//...
public function process(Item $item): void
{
// change menu item data.
}
}
Cacheable Process
You can implement \Wiredupdev\MenuManagerBundle\Menu\Cacheable for process that don't need to be executed everytime when menu is render.
Rendering menu
You can optionally set the template as second parameter.
{{ menu('main_menu_site', 'some-template.html.twig') }}
For template override see @WudMenuManager\default.html.twig