Я думаю, все ответы выше неверны.Они показывают способы достижения того же самого, но представляют логику в неправильном месте в вашем приложении, что в конечном итоге может вызвать проблемы в дальнейшем.
Правильная часть вашей логики маршрута, насколько чрезвычайно проста, в маршрутах,Чего не хватает, так это того, что маршрут по умолчанию Zend_Controller_Router_Route_Module
не позволяет добавлять исключения для определенных маршрутов.Так что вам нужно сделать, это удалить маршрут по умолчанию из ваших маршрутов и добавить новый собственный маршрут (который должен функционировать точно так же, как маршрут по умолчанию, но допускает исключения) на его месте.
Вы можете написатьновый маршрут путем расширения класса маршрута по умолчанию.
class My_Custom_Route extends Zend_Controller_Router_Route_Module
{
protected $_excludes = array();
public function exclude($abc)
{
//add to $_excludes here the controller/action you want to exclude
}
public function match($abc)
{
//add functionality here that denies if the mod/contr/action is in $_excludes
//you can also add this in a separate method
//re-use parent code
}
}
Теперь вы можете добавить добавить исключения, например, в файле конфигурации, и загрузить + добавить исключения в месте, где вы инициируете новый маршрут (идобавить его в роутер).Пошли.