2016-05-18 18 views
0

チュートリアルをしていますが、http://book.cakephp.org/3.0/en/development/errors.html#exception-rendererに従ってください。動作しておらず、空白のページが表示されています。 SRC /エラー/ AppError.phpCakePHP3 - カスタムページエラー404が動作しない

でのconfig/bootstrap.phpの

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

<?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 /テンプレート/レイアウト/ 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')); 
} 

答えて

0

空白ページに遭遇するたびに、有効なデバッグモード、再びURLを訪問し、あなたのエラーログを確認してください。

しかし、この場合の問題は、アプリケーションのエラーの例ではまったく何もしないため、ドキュメントが誤った/誤解を招く可能性が高いと考えられます。 _の接頭辞付きメソッドは、protectedであり、何かを返させることは効果がありません。handleFatalErrorはブール値を返します。

ちょうどthe source of Cake\Error\BaseErrorHandlerthe core error handler Cake\Error\ErrorHandlerを見ると、上書きしているメソッドは出力を生成するためのものです!

at GitHub以上の問題として報告するとよいでしょう。

あなたがしたいことがあれば、カスタム4xxエラーページを作成します。それに応じて、src/Template/Error/error400.ctpテンプレートを編集するだけです。

0

私の間違いが見つかりました。 :( bootstrap.phpでファイルの最後に以下のコードをコピーしていますので、ケーキはそれを理解できませんのでご了承ください。

use App\Error\AppError; 
$errorHandler = new AppError(); 
$errorHandler->register(); 
関連する問題