假设有人点击了网址http://mysite.com/comments/view/13
但是评论控制器中没有这种不作为。
然后它会得到正常的错误,比如=>
Error: The action view is not defined in controller CommentsController
Error: Create CommentsController::view() in file: app/controllers/comments_controller.php.
<?php
class CommentsController extends AppController {
var $name = 'Comments';
function view() {
}
}
?>
Notice: If you want to customize this error message, create app/views/errors/missing_action.ctp
我要做的是,如果有人点击了网址http://mysite.com/comments/view/13,如果该操作不存在,那么它会重定向到http://mysite.com/。
如何针对未知/缺席动作执行此操作?
答案 0 :(得分:2)
这个技巧实际上运作得很好。 您需要创建一个文件app / app_error.php
<?php
class AppError extends ErrorHandler {
public function error404($params){
extract($params);
if(!isset($url)){
$url = $action;
}
if(!isset($message)){
$message ="";
}
if(!isset($base)){
$base = "";
}
$this->controller->redirect(array('controller'=>'pages','action'=>'home'));
//Or the page you want...
}
}
?>
它是如何运作的?
它实际上覆盖了ErrorHandler中的error404()
函数,并将用户重定向到$this->controller->redict()
;
答案 1 :(得分:1)
注意错误消息的底部,它表示您可以通过创建app/views/errors/missing_action.ctp
来自定义它。所以你需要做的就是创建.ctp文件并在其中包含一个重定向:
<?php
header( 'Location: http://mysite.com' ) ;
?>
答案 2 :(得分:0)
它在错误中表示正确......
创建app / views / errors / missing_action.ctp
这就是你应该做的......
尝试使用missing_action.ctp
中的标题重定向到您希望页面前往的位置。
答案 3 :(得分:0)
您可以自定义app / views / errors / missing_action.ctp,也可以在app / config / core.php中关闭调试