The MenuBundle
means easy-to-implement and feature-rich menus in your Symfony application!, (*1)
Installation
Download the Bundle
Open a command console, enter your project directory and execute the
following command to download the latest stable version of this bundle:, (*2)
$ composer require desarrolla2/menu-bundle
This command requires you to have Composer installed globally, as explained
in the installation chapter
of the Composer documentation., (*3)
Enable the Bundle
Then, enable the bundle by adding the following line in the app/AppKernel.php
file of your project:, (*4)
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new Knp\Bundle\Desarrolla2\MenuBundle(),
);
// ...
}
// ...
}
An example builder class would look like this:, (*5)
<?php
namespace AdminBundle\Menu;
use Desarrolla2\MenuBundle\Menu\MenuInterface;
class MainMenu implements MenuInterface
{
public function getMenu()
{
return [
'class' => 'sidebar-menu',
'items' => [
[
'name' => 'Users',
'icon' => 'fa fa-user',
'items' => [
[
'name' => 'Admins',
'route' => 'admin_core_user_admin_list',
'active_routes' => [
'admin_core_user_admin_[\w]+',
],
],
[
'name' => 'Clients',
'route' => 'admin_core_user_client_list',
'active_routes' => [
'admin_core_user_client_[\w]+',
],
],
],
],
[
'name' => 'Groups',
'route' => 'admin_core_group_list',
'icon' => 'fa fa-users',
'active_routes' => [
'admin_core_group_[\w]+',
'_admin.group.[\w\.]',
],
],
],
];
}
}
Render
To actually render the menu, just do the following from anywhere in any template:, (*6)
```html+jinja
{{ renderMenu('TeacherBundle\Menu\MainMenu','sidebar') }}, (*7)
If you are defined your menu as a service, you can render as follow:
```html+jinja
{{ renderMenu('my.menu.service.name','sidebar') }}