Ниже приведена функция, определенная в моем классе Bootstrap
. Я должен упустить что-то фундаментальное в том, как Zend выполняет маршрутизацию и диспетчеризацию. То, что я пытаюсь сделать, прост: для любого запроса /foo/bar/*
, который по какой-либо причине не может быть отправлен, попробуйте /index/foo/bar/
. Проблема, с которой я столкнулась, - это когда существует FooController
, я получаю Action "foo" does not exist
. В принципе, значение isDispatchable
всегда неверно.Маршрутизация запроса zend через контроллер по умолчанию, когда контроллер не найден
public function run() {
$front = Zend_Controller_Front::getInstance();
$request = $front->getRequest();
$dispatcher = $front->getDispatcher();
//$controller = $dispatcher->getControllerClass($request);
if (!$dispatcher->isDispatchable($request)) {
$route = new Zend_Controller_Router_Route(
':action/*',
array('controller' => 'index')
);
$router = $front->getRouter();
$router->addRoute('FallBack', $route);
}
$front->dispatch();
}
Я не уверен, '__call' метод вы имеете в виду? Какой класс? Более конкретно, класс контроллера в этом случае не существует. Причина, по которой я хочу ввести новый маршрут, заключается в том, что я могу запустить цикл и правильно убрать маршрутизатор всего, что следует за:: action /. Однако я понимаю, что это невозможно сделать в бутстрапе, поскольку маршрутизатор и диспетчер еще не готовы. Думаю, мне, возможно, придется создать плагин или что-то еще. –
@brett Я обновил свой ответ, надеюсь, мой ответ поможет вам – tawfekov