The MenuBundle
means easy-to-implement and feature-rich menus in your Symfony application!
Open a command console, enter your project directory and execute the following command to download the latest stable version of this bundle:
$ composer require desarrolla2/menu-bundle
This command requires you to have Composer installed globally, as explained
in the installation chapter
of the Composer documentation.
Then, enable the bundle by adding the following line in the app/AppKernel.php
file of your project:
// 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:
<?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\.]',
],
],
],
];
}
}
To actually render the menu, just do the following from anywhere in any template:
{{ renderMenu('TeacherBundle\\Menu\\MainMenu','sidebar') }}
If you are defined your menu as a service, you can render as follow:
{{ renderMenu('my.menu.service.name','sidebar') }}