这是我的路线档案。如果找不到控制器,如何重定向到数组('controller'=>'pages','action'=>'display','home')?
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
Router::connect('/login', array("controller"=>"user","action"=>"login"));
Router::connect('/settings', array("controller"=>"user","action"=>"settings"));
Router::connect('/logout', array("controller"=>"user","action"=>"logout"));
Router::connect('/video', array("controller"=>"video","action"=>"index"));
Router::connect('/video/page/*', array("controller"=>"video","action"=>"page"));
Router::connect('/video/*', array("controller"=>"video","action"=>"view"));
Router::connect('/upcoming', array("controller"=>"user","action"=>"upcoming"));
答案 0 :(得分:1)
您应该创建一个自定义异常处理程序,将用户重定向回主页。请参阅此主题的documentation。
可能是这样的(未经测试,但只是为了让你知道从哪里开始):
class AppErrorHandler {
public static function handleException($error) {
if ($error instanceof MissingControllerException) {
// Redirect home, $this->redirect will probably not work,
// since the Error Handler doesn't extend the AppController.
header('Location: /');
exit;
}
}
}
答案 1 :(得分:1)
答案 2 :(得分:1)
这很简单。在/ app目录中创建app_error.php
文件,(就像app_model.php
或app_controller.php
一样)
完成后,请输入以下内容:
<?php
class AppError extends ErrorHandler {
function missingController($params) {
extract($params, EXTR_OVERWRITE);
$this->controller->redirect('/');
}
}
现在,这应该可以解决您的问题。如果需要调用组件和beforeFilters / Renders,可以从构造函数中调用它们。