-
Notifications
You must be signed in to change notification settings - Fork 146
Open
Milestone
Description
I can't display manu using Listener.
What I do?
- Created into my bundle directory Model (AppBundle\Model)
- Created into Model class MenuItemModel with MenuItemInterface and declared abstract method
- Created directory EventListener into AppBundle
- Created class MyMenuItemListListener
namespace AppBundle\EventListener;
use AppBundle\Model\MenuItemModel;
use Avanzu\AdminThemeBundle\Event\SidebarMenuEvent;
use Symfony\Component\HttpFoundation\Request;
class MyMenuItemListListener
{
public function onSetupMenu(SidebarMenuEvent $event) {
$request = $event->getRequest();
foreach ($this->getMenu($request) as $item) {
$event->addItem($item);
}
}
protected function getMenu(Request $request) {
// Build your menu here by constructing a MenuItemModel array
$menuItems = array(
new MenuItemModel('ItemId1', 'Label1', 'rasfe', array(/* options */), 'iconclasses fa fa-plane'),
new MenuItemModel('ItemId2', 'Label2', 'sad', array(/* options */), 'iconclasses fa fa-plane'),
);
return $this->activateByRoute($request->get('_route'), $menuItems);
}
protected function activateByRoute($route, $items) {
foreach($items as $item) {
if($item->hasChildren()) {
$this->activateByRoute($route, $item->getChildren());
}
else {
if($item->getRoute() == $route) {
$item->setIsActive(true);
}
}
}
return $items;
}
}Next I add services
parameters:
app.menu_listener.class: AppBundle\EventListener\MyMenuItemListListener
services:
app.menu_listener:
class: %app.menu_listener.class%
tags:
- { name: kernel.event_listener, event:theme.sidebar_setup_menu, method:onSetupMenu }`Problem is that menu item isn't visible.
`<section class="sidebar" style="height: auto;">
<!-- sidebar menu: : style can be found in sidebar.less -->
<ul class="sidebar-menu"> <li class="header"></li> </ul></section>`Reactions are currently unavailable