#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'));
ИМО, второй вариант является лучшим