簡體   English   中英

CakePHP3-自定義頁面錯誤404不起作用

[英]CakePHP3 - Custom page error 404 not working

我正在按照http://book.cakephp.org/3.0/en/development/errors.html#exception-renderer進行教學,但無法正常工作,並顯示空白頁。

在config / bootstrap.php中

use App\Error\AppError;
$errorHandler = new AppError();
$errorHandler->register();

在src / Error / AppError.php中

<?php
namespace App\Error;

use Cake\Error\BaseErrorHandler;

class AppError extends BaseErrorHandler
{
    public function _displayError($error, $debug)
    {
        return 'There has been an error!';
    }
    public function _displayException($exception)
    {
        return 'There has been an exception!';
    }

    public function handleFatalError($code, $description, $file, $line)
    {
        return 'A fatal error has happened';
    }
}

我在src / Template / Layout / my_error.ctp中創建my_error.ctp。 在我的src / Template / Error / error404.ctp中,將布局更改為my_error.ctp。

$this->layout = 'my_error';

最后,在我的控制器中

use Cake\Network\Exception\NotFoundException;
$staff = $this->Staff->find()->where(['Staff.StaffId = '=> $id, 'Staff.PartnerId = ' =>$this->partnerId])->first();
if (empty($staff)) {
    throw new NotFoundException(__('Staff not found'));
}

每當遇到空白頁時,請啟用調試模式,然后再次訪問URL,並檢查錯誤日志。

但是,這種情況下的問題很可能是文檔不正確/具有誤導性,因為示例應用程序錯誤根本不會做任何事情。 帶有_前綴的方法必須加以protected ,讓它們返回某些內容無效,而handleFatalError則返回布爾值。

只需查看Cake\\Error\\BaseErrorHandler的源代碼核心錯誤處理程序Cake\\Error\\ErrorHandler ,您覆蓋的方法就可以生成輸出!

您可能希望將其作為問題報告給GitHub

如果您要做的只是創建一個自定義4xx錯誤頁面,那么您要做的就是相應地編輯src/Template/Error/error400.ctp模板。

我發現了我的錯誤。 :(因為在bootstrap.php中,我在文件末尾復制以下代碼。因此Cake無法理解。請關閉此問題。感謝您的支持。

use App\Error\AppError;
$errorHandler = new AppError();
$errorHandler->register();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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