У меня есть вопрос о меню в ZF2.ZF2 различные меню в разных контроллерах
У меня есть один модуль и два контроллера, например. В макете я могу оказать меню:
<?php echo $this->navigation()->menu('mainMenu'); ?>
<?php echo $this->navigation()->menu('settingsMenu'); ?>
Но я хочу, чтобы сделать их отдельно, в зависимости от текущего контроллера и в макете должно быть что-то вроде этого:
$this->menu;
Как я могу зарегистрировать переменную " меню "в качестве меню в зависимости от контроллера. Я попытался сделать это в методе onBootstrap, но мне не удалось.
Я сделал это так:
module.php:
public function onBootstrap(MvcEvent $e)
{
$e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_DISPATCH, array($this, 'headMenuAttach'));
}
public function headMenuAttach(MvcEvent $e)
{
$controller = $e->getTarget();
if (method_exists($controller, 'getHeadMenu')) {
$menu = $controller->getHeadMenu();
$controller->layout()->setVariable('MainMenu', $menu);
}
}
расположение:
$this->navigation()->menu($this->MainMenu);
контроллер:
public function getHeadMenu()
{
return 'settingsMenu';
}
Правильно ли это в ZF2-way? :)
У меня уже есть два объекта: 'mainMenu' и 'settingsMenu', зарегистрированные в ServiceManager. Но я не могу понять, как я могу зарегистрировать «меню» в представлении, чтобы содержать нужное мне меню в зависимости от контроллера. – dima