ZF: ZEND_NAVIGATION_PAGE - страница не получает активный статус - PullRequest
0 голосов
/ 14 июня 2011

Я создал меню с такими страницами:

$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);

Где $contentMenuTree - это экземпляр Zend_Navigation.

И есть маршрут в начальной загрузке:

$router->addRoutes(array(            
    'catalog'  => new Zend_Controller_Router_Route('/catalog/:cat', array('module' => 'default', 'controller' => 'catalog', 'index' => 'index', 'cat' => null))
));

Если я позвоню на site.ru/catalog/test, в $ contentMenuTree ничего не будет активной страницы.

Так что я нашел патч для него, но он кажется неправильным:

$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;

Почему zend_navigation не получает активный элемент страницы автоматически?

1 Ответ

2 голосов
/ 14 июня 2011

у вас нет action в вашем роутере

я думаю, что должно быть

$router->addRoutes(array(            
    'catalog'  => new Zend_Controller_Router_Route('/catalog/:cat', 
     array('module' => 'default', 
           'controller' => 'catalog', 
           'action' => 'index',
           'cat' => null))
));
...