CakePHP AppExceptionHandler和视图

时间:2012-08-23 22:25:17

标签: php cakephp exception-handling error-handling cakephp-2.0

我检查了this questioncookbook section 我创建了这样的代码并完成了这个步骤:

在app / Config / core.php

Configure::write('Exception.handler', 'AppExceptionHandler::handle');

在app / Config / bootstrap.php

App::uses('AppExceptionHandler', 'Lib');

在app / Lib / AppExceptionHandler.php

class AppExceptionHandler {
    public static function handle($error) {
        $errorCode = $error->getCode();
        if ($errorCode == 404) {
            header("HTTP/1.0 404 Not Found");
        } elseif ($errorCode == 500) {
            header("HTTP/1.0 500 Internal Server Error");
        }

        echo "here is something is wrong";
    }
}

除渲染部分外,一切正常 到目前为止,我只能写“出错了”,但我无法在视图文件中查看。

在“App / Controller”文件夹中,我有“ErrorsController.php” 我得到一个异常时需要运行ErrorsController。所以我将在控制器的视图文件中进行渲染。

  1. 如何将用户重定向到ErrorsController?当然我可以使用redirect命令。但是当我将用户重定向到ErrorsController :: index()函数时,当我在ErrorsController中发送404标头时,我再次被重定向到处理程序页面。
  2. 我应该在哪里设置响应标头?我应该在ErrorsController或处理程序中设置它吗?
  3. 修改

    class ErrorsController extends AppController {
        function beforeFilter() {
            if ( isset($this->request->params['pass'][0]) ) {
                 if ($this->request->params['pass'][0] == "404") {
                    $this->response->statusCode('404');
                }
            }
        }
    
    
        public function index($typeOfError) {
            echo "here I am $typeOfError";
        }
    }
    

    当我进入example.com/errors/index/404时输出是“这里有问题”,但我需要它“在这里我是404”。因为当我进入ErrorsController的动作并发送404标题时,我被重定向到AppHandler的句柄。那么我该如何呈现自己的观点呢?

    此问题仍然存在..

0 个答案:

没有答案