Проблема создания URL Zend_Navigation - PullRequest
0 голосов
/ 27 августа 2009

Я использую компонент Навигация для меню сайта. Я также использую 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, когда маршрут не определяет их.

1 Ответ

0 голосов
/ 29 августа 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...