Я использую компонент Навигация для меню сайта. Я также использую let zend для определения выбранного пункта меню из параметров запроса - я думаю, это делается автоматически. Единственная проблема состоит в том, что для того, чтобы это работало, действие и контроллер должны быть указаны в конфигурации навигации для каждого узла. Это также означает, что когда Zend генерирует ссылки из маршрута, действий и информации контроллера, автоматически добавляются к сгенерированной ссылке.
У кого-нибудь была такая же проблема?
Раздел руководства Zend , объясняющий особенности страницы навигации Mvc.
Пример:
некоторый маршрут, определенный в начальной загрузке:
$router->addRoute('user_profile_tab', new Zend_Controller_Router_Route(
'profil/:user/:location/:tab/*',
array(
'action' => 'profile',
'controller' => 'user',
'user' => ($user ? $user->id : 0), //change later
'location' => 0 //inject appropriate value later
)
));
объект контейнера навигации:
$container = .....
......,
array(
'label' => tr('Privileges'),
'id' => 'user-profile-perms',
'type' => 'Zulu_Navigation_Page',
'controller' => 'user',
'action' => 'profile',
'route'=> 'user_profile_tab',
'params' => array('tab'=>Main_Lib_Common::NAVI_USER_TAB_PERMS)
)
);
результат при использовании
$page = $container->getById('user-profile-perms');
$page->href;
http://www.example.com/profil/1/0/3/controller/user/action/profile
ПОЧЕМУ запрашиваемые параметры действий и контроллеров в навигационном контейнере. Для проверки $ page-> isActive () эти данные необходимы для идеального соответствия.
ИСПРАВЛЕНИЕ:
расширить страницу навигации mvc и предоставить альтернативный метод getHref () ... тот, который удаляет параметры action, controller и module, когда маршрут не определяет их.