У меня проблемы с настройкой хлебных крошек и меню с помощью Zend_Navigation.
Сначала я настраивал свои страницы с помощью объекта конфигурации XML:
<?xml version="1.0" encoding="UTF-8"?>
<configdata>
<nav>
<home>
<label>Home</label>
<controller>Index</controller>
<action>index</action>
<id>home</id>
<resource>default</resource>
</home>
<crm>
<label>CRM</label>
<module>Crm</module>
<controller>Index</controller>
<action>index</action>
<id>crm</id>
<resource>Crm</resource>
<pages>
<persons>
<module>Crm</module>
<label>Personen</label>
<controller>Persons</controller>
<action>index</action>
</persons>
(...)etc.(...)
Затем в моем загрузчике:
//Bootstrap.php
$view = $layout -> getView();
$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
$navigation = new Zend_Navigation($config);
$view -> navigation($navigation);
$view -> menu = $view -> navigation() -> menu();
$view -> breadcrumbs = $view -> navigation()->breadcrumbs()->setMinDepth(0);
Теперь, если бы я должен был перейти к http://hostname/Crm/Persons/
, активное состояние работало бы, и хлебные крошки также отображались бы правильно.
Однако, когда я перехожу к http://hostname/Crm/Persons/inspect/id/3
(где inspect - это действие, а id - параметр), хлебные крошки будут пустыми, и ни один из пунктов меню не будет иметь активное состояние.Ожидаемые хлебные крошки примерно такие: Home > CRM > Personen > John
, и CRM и Personen должны быть активны в меню.
Теперь документация Zend дала мне подсказку: она может не работать из-за установленного параметра.
/*
* Dispatched request:
* - module: blog
* - controller: post
* - action: view
*/
$page = new Zend_Navigation_Page_Mvc(array(
'action' => 'view',
'controller' => 'post',
'module' => 'blog',
'params' => array('id' => null)
));
// returns false, because page requires the id param to be set in the request
$page->isActive(); // returns false
Однако я не знаю, как это исправить.Мысли высоко ценятся.