当我输入网址时:
http://localhost/asdfasdfasdcxccarf
Phalcon 给我这个信息:
PhalconException: AsdfasdfasdcxccarfController handler class cannot be loaded
这是合乎逻辑的,因为这个控制器不存在。
但是,如何让 Phalcon 将每个没有控制器的错误 url 重定向到我的默认控制器 IndexController?
当我输入网址时:
http://localhost/asdfasdfasdcxccarf
Phalcon 给我这个信息:
PhalconException: AsdfasdfasdcxccarfController handler class cannot be loaded
这是合乎逻辑的,因为这个控制器不存在。
但是,如何让 Phalcon 将每个没有控制器的错误 url 重定向到我的默认控制器 IndexController?
您可以将以下调度程序服务添加到依赖注入容器。它将检查内部 Phalcon 错误(例如错误的控制器)并将用户转发到指定的控制器和操作:
$di->set('dispatcher', function() {
$eventsManager = new \Phalcon\Events\Manager();
$eventsManager->attach("dispatch:beforeException", function($event, $dispatcher, $exception) {
//Handle 404 exceptions
if ($exception instanceof \Phalcon\Mvc\Dispatcher\Exception) {
$dispatcher->forward(array(
'controller' => 'index',
'action' => 'show404'
));
return false;
}
//Handle other exceptions
$dispatcher->forward(array(
'controller' => 'index',
'action' => 'show503'
));
return false;
});
$dispatcher = new \Phalcon\Mvc\Dispatcher();
//Bind the EventsManager to the dispatcher
$dispatcher->setEventsManager($eventsManager);
return $dispatcher;
}, true);
您可以在 di 初始化中设置默认路由:
$di->set('router', function() {
$router = new \Phalcon\Mvc\Router();
//your routes here
$router->setDefaults(array(
'controller' => 'index',
'action' => 'index'
));
return $router;
});
因此,当调度程序未找到操作时,他将使用CurentController => indexAction
其他操作,当调度程序未找到控制器时,他将使用IndexController => indexAction