CakePHP控制器/动作问题与http://mysite.com/mycontroller/absentaction

时间:2011-09-01 15:40:36

标签: php cakephp cakephp-1.3

假设有人点击了网址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/

如何针对未知/缺席动作执行此操作?

4 个答案:

答案 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中关闭调试