2012-10-03 72 views
0

我最近将1.3蛋糕应用程序升级到了2.0,并且我试图重做我的app_error代码。AppError 404等价于蛋糕2.0

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

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

它有一些代码,一脚踢在当有人到达预定义的“别名” URL的网站,然后将其重定向相应的他们。

我只需要这个在Cake2.0中工作,我看到手册告诉我它的一切都改变了,但我找不到像这样的特定情况。任何人都可以帮助我,所以error404代码踢了吗?

非常感谢

回答

2

可以抛出404异常,并在控制器下面的代码在蛋糕2:

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

然后,你只需要有APP/View/Errors/error400.ctp目前与显示相关的东西。蛋糕包括默认设置:

<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; 
?> 
+0

定义了名为'exception_stack_trace'的元素在哪里?它似乎没有出现在Cake代码库的任何地方。 – geoidesic

+0

@geoidesic这个问题是关于蛋糕2.该元素可以在https://github.com/cakephp/cakephp/tree/2.x/lib/Cake/View/Elements找到 - 不知道最新的蛋糕3虽然。我在Cake 2之后转向了Laravel,所以我不熟悉最新版本。 – Joseph

5

4XX和5XX错误在CakePHP的2.0 AR现在例外,因此你需要定制您的异常渲染器或处理程序。从阅读本节的底部http://book.cakephp.org/2.0/en/development/exceptions.html#exception-renderer

+0

我在这里听起来很愚蠢,我读过所有这些,而且我也不明智。我找不到任何关于扩展错误404的参考,它的所有内容都围绕着内部例外。我无法看到我如何在Cake2.0上复制我的上述示例 –

+0

无法编辑上述内容。我发现这个,http://book.cakephp.org/2.0/en/development/exceptions.html#built-in-exceptions-for-cakephp但没有真正的解释如何实现它。 –

1

很简单。

使用CakePHP 2,你必须在你的AppController中添加此功能:

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

这里,例如我们全部重定向错误索引页。

+0

为什么你会将所有错误重定向到索引页? – davo0105