я определяю все мои страницы в файле XML, как в следующем:Zend Navigation - Rendering подменю
<?xml version="1.0" encoding="UTF-8"?>
<configdata>
<nav>
<dashboard>
<label>Dashboard</label>
<module>default</module>
<controller>dashboard</controller>
<action>index</action>
<title>Die Schaltzentrale</title>
</dashboard>
<user>
<label>User</label>
<module>default</module>
<controller>user</controller>
<action>index</action>
<title>Verwaltung der Benutzer</title>
<userList>
<module>default</module>
<controller>user</controller>
<action>index</action>
<label>Userliste anzeigen</label>
</userList>
<newUser>
<label>User anlegen</label>
<module>default</module>
<controller>user</controller>
<action>new</action>
</newUser>
<editUser>
<label>User bearbeiten</label>
<module>default</module>
<controller>user</controller>
<action>edit</action>
</editUser>
</user>
</nav>
</configdata>
В моей начальной загрузки установки I моей навигации, как это:
protected function _initNavigation()
{
$this->bootstrap('layout');
$layout = $this->getResource('layout');
$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml','nav');
$view = $layout->getView();
$navigation = new Zend_Navigation($config);
$view->navigation($navigation);
Zend_Registry::set('Zend_Navigation',$navigation);
}
Эта установка позволяет мне сделать мое основное меню следующими строками:
$partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial);
echo $this->navigation()->menu()->render();
Пока все хорошо. Моя проблема заключается в том, чтобы сделать конкретное подменю. Предположим, я хочу отобразить меню со всеми действиями пользовательского контроллера. Я попытался сделать это с помощью:
$page = $this->navigation()->findOneBy('controller','user');
echo $this->navigation()->menu()->renderMenu($page);
Но у меня не было выхода. Я также попытался получить результат, установив параметр minDepth или maxDepth без каких-либо успехов. Кто-нибудь задерживает меня, как я могу заставить его работать?
Спасибо за ваш ответ. Я нашел подход findOneBy ('controller') в этом учебнике [ссылка] (http://www.brandonsavage.net/making-zend_navigation-useful/). Если я ищу метку вместо контроллера, я на самом деле получаю вывод. Но я получаю только главное меню. Мне кажется, что Zend неправильно читает в структуре XML. – Benni
Возможно, что xml неверен. Я обновил свой ответ. Попробуйте изменить xml. –
С вашим предложением я могу получить выход. Но у меня все еще есть одна проблема. Предположим, у меня есть еще один контроллер под названием «устройство» с двумя страницами. Если я создам свое подменю, теперь я получаю меню со всеми страницами, которые имеют глубину в один. Но не разделяется конкретным контроллером. Поэтому я получаю меню со всеми ссылками от пользователя и устройства, хотя я ищу конкретную метку. Мне кажется, что с моим XML все еще что-то не так. – Benni