ZF:ZEND_NAVIGATION_PAGE - 页面未获得活动状态
I have generated menu with pages like that:
$pageSettings = array(
'route' => 'catalog',
'label' => $element->getName(),
'module' => 'default',
'controller' => 'catalog',
'action' => 'index',
'params' => array('cat' => $element->getUrl()),
'order' => $element->getOrder(),
'id' => 'catalogID_' . $element->getId(),
);
$contentMenuTree->addPage($pageSettings);
Where $contentMenuTree
is a Zend_Navigation instance.
And have a route in a bootstrap:
$router->addRoutes(array(
'catalog' => new Zend_Controller_Router_Route('/catalog/:cat', array('module' => 'default', 'controller' => 'catalog', 'index' => 'index', 'cat' => null))
));
If I call site.ru/catalog/test then there are nothing active page in $contentMenuTree.
So I found patch for it but it doesn't seem correct:
$front = Zend_Controller_Front::getInstance();
$action = $front->getRequest()->getActionName();
$cat = $front->getRequest()->getParam('cat');
$module = $front->getRequest()->getModuleName();
$controller = $front->getRequest()->getControllerName();
if ($controller == 'catalog' && $module == 'default'
&& $action == 'index' && $cat==$element->getUrl())
$pageSettings['active'] = true;
Why zend_navigation doesn't get active page element automatically?
我生成了包含以下页面的菜单: p>
$ pageSettings = array(
'route'=>'catalog',
'label'=> $ element-> getName(),
'module'=>'default',
'controller' =>'catalog',
'action'=>'index',
'params'=> array('cat'=> $ element-> getUrl()),
'order' => $ element-> getOrder(),
'id'=>'catalogID_'。$ element-> getId(),
);
$ contentMenuTree-> addPage($ pageSettings );
code> pre>
其中 $ contentMenuTree code>是一个Zend_Navigation实例。 p>
并且有一个路由 引导程序: p>
$ router-> addRoutes(array(
'stalog'=> new Zend_Controller_Router_Route('/ catalog /:cat',array('module') =>'默认','控制器'=>'目录', 'index'=> 'index','cat'=> null))
));
code> pre>
如果我调用site.ru/catalog/test,那么$ contentMenuTree中没有任何活动页面。 p> \ n
所以我找到了它的补丁,但它似乎不正确: p>
$ front = Zend_Controller_Front :: getInstance();
$ action = $ front-> getRequest() - > getActionName();
$ cat = $ front-> getRequest() - > getParam('cat');
$ module = $ front-> getRequest() - > getModuleName();
$ controller = $ front-> getRequest() - > getControllerName();
if($ controller =='catalog'&& $ module =='default'
&& $ action =='index'&& $ cat == $ element-> getUrl())
$ pageSettings ['active'] = true;
code> pre>
为什么zend_navigation不会自动获取活动页面元素? p>
div>
you don't have action
in your router
i think it should be
$router->addRoutes(array(
'catalog' => new Zend_Controller_Router_Route('/catalog/:cat',
array('module' => 'default',
'controller' => 'catalog',
'action' => 'index',
'cat' => null))
));