蛋糕2.0中的AppError 404等效

时间:2012-10-03 08:41:57

标签: cakephp error-handling migration

我最近将1.3蛋糕应用程序升级到2.0,我正在尝试重做我的app_error代码。

使用Cake 1.3,它只是创建一个app_error.php文件,将其放入我的应用程序根目录,并覆盖内置的error404()和missingController()操作。

这是我的旧1.3 /app/app_error.php文件:http://pastebin.com/beWZD9PJ

当有人使用预定义的“别名”网址到达网站时,它会引入一些代码,然后相应地重定向它们。

我只需要在Cake2.0中使用它,我看到手册告诉我它全部改变了,但我找不到像这样的特定情况。任何人都可以帮助我,所以error404代码开始了吗?

非常感谢

3 个答案:

答案 0 :(得分:5)

CakePHP 2.0中的4xx和5xx错误现在是异常,因此您需要自定义您的异常渲染器或处理程序。请阅读此部分的底部http://book.cakephp.org/2.0/en/development/exceptions.html#exception-renderer

答案 1 :(得分:2)

您可以在Cake 2的控制器中使用以下代码抛出404异常:

throw new NotFoundException(__('Your error text here'));

然后,您只需要APP/View/Errors/error400.ctp出现与展示相关的内容。 Cake默认包括:

<h2><?php echo $name; ?></h2>
<p class="error">
    <strong><?php echo __d('cake', 'Error'); ?>: </strong>
    <?php printf(
        __d('cake', 'The requested address %s was not found on this server.'),
        "<strong>'{$url}'</strong>"
    ); ?>
</p>
<?php
if (Configure::read('debug') > 0 ):
    echo $this->element('exception_stack_trace');
endif;
?>

答案 2 :(得分:1)

很简单。

使用cakephp 2,您必须在AppController中添加此功能:

public function appError($error) {
    $this->redirect('/');
}

例如,我们将所有错误重定向到索引页。