2009-08-27 3 views
0

Я использую компонент Navigation для меню сайта. Я также использую let zend для определения выбранного пункта меню из параметров запроса - я думаю, это делается автоматически. Единственная проблема заключается в том, что для этого для работы, действия и контроллер должны быть указаны в конфигурации навигации для каждого узла. Это также означает, что, когда zend автоматически генерирует ссылки из маршрута, действия и информации контроллера для добавления к сгенерированной ссылке.Проблема генерации URL-адреса Zend_Navigation

У кого-то была такая же проблема?

Zend manual section, объясняя особенности страницы навигации 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 

ПОЧЕМУ действия и Controler params в объекте навигационного контейнера, который вы запрашиваете. Проверка $ page-> isActive() требует, чтобы эти данные идеально соответствовали друг другу.

FIX:

расширить Mvc страницу навигации и предоставить метод альтернативного getHref() ... тот, который удаляет действия, контроллера и модуля Params, когда маршрут не определяет их.

+0

Можете привести пример? –

ответ

0

Я сделал это, чтобы исправить это странное поведение:

  • расширения MVC страница навигации
  • предоставить метод альтернативной getHref()
  • чек на маршруты, не имеющее действие, контроллер и модуль параметры и удалите их из массива params до генерации href.

Таким образом, соответствие isActive будет по-прежнему работать, поскольку мы не изменили маршрут или навигационные узлы каким-либо образом.

+0

Возможно, вам следует подать отчет об ошибке, поскольку это, безусловно, не является предполагаемым поведением: http://framework.zend.com/issues –

Смежные вопросы