我有一个cakephp应用程序,每当Cake遇到任何错误(缺少控制器,操作等)时,我都会尝试提供Pages::404
函数(以及相应的视图)。
最好的方法是什么?
答案 0 :(得分:25)
Cake会自动为丢失的方法或控制器抛出404错误。在调试模式下,此错误采用包含指令的详细错误消息的形式,如:
缺少控制器
错误:找不到FooController。
错误:在文件中创建下面的类FooController:>应用程序/控制器/ foo_controller.php
注意:如果要自定义此错误消息,请创建app / views / errors / missing_controller.ctp
在生产模式(debug = 0
)中,消息如下所示:
未找到
错误:在此服务器上找不到请求的地址'/ foo'。
这些错误页面在cake/libs/view/errors/
中定义。正如调试模式中的消息所示,您可以在cake/
中创建自己的自定义错误页面(使用与app/views/errors/
目录中相同的名称)。
如果您想对错误执行自定义功能,最好将其放在AppError
控制器中,如Error Handling中所述。
答案 1 :(得分:10)
步骤1:在app_controller.php中添加两个函数
function _setErrorLayout() {
if ($this->name == 'CakeError') {
$this->layout = 'error';
}
}
function beforeRender () {
$this->_setErrorLayout();
}
}
第2步:在views\layouts\
创建error.ctp
包含echo $ content_for_layout;
步骤:3 views\errors\
make missing_action.ctp
并根据需要自定义页面
我的PHP代码是:
echo $html->image('404-not-found-1-3.jpg');
答案 2 :(得分:0)
当您尝试重定向到404错误页面时,您是否在控制器中?
如果是这种情况,你可以解决这个问题:
从蛋糕中复制并粘贴错误布局(error404.ctp) 核心库目录到你的app / views / errors /
每当您在控制器中遇到错误时,请添加以下行。
$this->cakeError('error404',array(array('url'=>'/')));
哦,另一种处理方法是编辑app / config
中的routes.php文件CakePHP Official site Routes-Configuration
目前我没有CakePHP的工作副本,所以我只想描述一下这里的基本逻辑(你可以在routes.php文件中做些什么)
将具有特定网址格式(例如http://yourwebsite/validController/validFunction/validParam)的流量分别重定向到相应的目的地。 将所有其他流量(缺少控制器,型号,视图等)重定向到404页面。
希望有所帮助:)
答案 3 :(得分:0)
请在app / controller文件夹中添加PostController.php类而不是post_controller.php。它只是意味着您必须像其类名一样创建。