Как сохранить маршрут Zend по умолчанию

#zend-framework #zend-route

#zend-framework #zend-маршрут

Вопрос:

Я пытаюсь настроить значимые URL-адреса, такие какhttp://www.site.com/company/department однако он удаляет мои существующие URL-адреса, которые находятся в форме контроллера / действия.

В моем bootstrap я создаю свой новый маршрут следующим образом:

 $frontController = Zend_Controller_Front::getInstance();
$router = $frontController->getRouter();
$route = new Zend_Controller_Router_Route(":company/:dpt", array('controller'   => 'browse'));
$router->addRoute("browse", $route);
  

Когда я перехожу к http://www.site.com/ABC_Co/dry_goods это перенаправляет меня на indexAction в BrowseController. Отлично! Проблема в том, что мои другие URL-адреса, связанные с администратором, такие как /company / create и т.д., Также направляются туда.

Есть ли какой-нибудь способ заставить Zend сначала выполнить сопоставление контроллера / действия по умолчанию и вернуться к маршруту просмотра только при сбое?

Спасибо!

Ответ №1:

Маршруты обрабатываются в LIFO, вам нужно будет сделать что-то вроде этого:

 $router->removeDefaultRoutes();
//add your routes
//add in the default route:
$route = new Zend_Controller_Router_Route(":module/:controller/:action"
  

Вместо этого вы можете просто подумать о добавлении «статического» компонента к вашему маршруту «просмотра». Это сделало бы is более конкретным:

 $route = new Zend_Controller_Router_Route("browse/:company/:dpt", array('controller'   => 'browse'));
  

ИМО, второй вариант является лучшим