[英]Cakephp: How would I route all missing controller/action calls to a single, general error page?
我有一個cakephp應用程序,我試圖在Cake遇到任何錯誤(缺少控制器,操作等)時提供Pages::404
函數(和相應的視圖)。
最好的方法是什么?
Cake會自動為丟失的方法或控制器拋出404錯誤。 在調試模式下,此錯誤采用包含指令的詳細錯誤消息的形式,如:
缺少控制器
錯誤:找不到FooController。
錯誤:在文件中創建下面的類FooController:> app / controllers / foo_controller.php
注意:如果要自定義此錯誤消息,請創建app / views / errors / missing_controller.ctp
在生產模式( debug = 0
)中,消息看起來像這樣:
未找到
錯誤:在此服務器上找不到請求的地址'/ foo'。
這些錯誤頁面在cake/libs/view/errors/
。 正如調試模式中的消息所示,您可以在app/views/errors/
創建自己的自定義錯誤頁面(使用與cake/
目錄中相同的名稱)。
如果要對錯誤執行自定義函數,最好將它放在AppError
Controller中,如錯誤處理中所述 。
第1步:在app_controller.php中添加兩個函數
function _setErrorLayout() {
if ($this->name == 'CakeError') {
$this->layout = 'error';
}
}
function beforeRender () {
$this->_setErrorLayout();
}
}
Step2:在views\\layouts\\
create error.ctp
包含echo $ content_for_layout;
步驟:3在views\\errors\\
make missing_action.ctp
並自定義頁面,因為您需要我的PHP代碼:
echo $html->image('404-not-found-1-3.jpg');
當您嘗試重定向到404錯誤頁面時,您是否在控制器中?
如果是這種情況,你可以像這樣解決問題:
將錯誤布局(error404.ctp)從蛋糕核心庫目錄復制並粘貼到您的app / views / errors /中
每當在控制器中遇到錯誤時,請添加以下行。
$this->cakeError('error404',array(array('url'=>'/')));
哦,另一種處理方法是編輯app / config中的routes.php文件
我目前沒有CakePHP的工作副本,所以我只想在這里描述基本邏輯(你可以在routes.php文件中做什么)
將具有特定URL模式(例如, http:// yourwebsite / validController / validFunction / validParam )的流量分別重定向到其對應的目標。 將所有其他流量(缺少控制器,型號,視圖等)重定向到404頁面。
希望有幫助:)
請在app / controller文件夾中添加一個PostController.php類而不是post_controller.php。 它只是意味着您必須像其類名一樣創建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.