簡體   English   中英

Cakephp:如何將所有丟失的控制器/操作調用路由到單個一般錯誤頁面?

[英]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官方站點路由配置

我目前沒有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM