Laravelでは、エラーが発生した場合、軽微な注意、警告、および推奨されないエラーが発生するたびに、アプリケーションを強制終了する完全なデバッグ情報が得られます。私のApp.configで私はデバッグ=>偽にして、何かが間違っているような "おっとり、"のメッセージが表示されます。Laravel例外ハンドラを無効にする
すべてのエラー処理をオフにできますが、アプリケーションのフロー全体を中断しない通常のPHPエラーを取得するにはどうすればよいですか?
Laravelでは、エラーが発生した場合、軽微な注意、警告、および推奨されないエラーが発生するたびに、アプリケーションを強制終了する完全なデバッグ情報が得られます。私のApp.configで私はデバッグ=>偽にして、何かが間違っているような "おっとり、"のメッセージが表示されます。Laravel例外ハンドラを無効にする
すべてのエラー処理をオフにできますが、アプリケーションのフロー全体を中断しない通常のPHPエラーを取得するにはどうすればよいですか?
App\Exceptions\Handler.php
ファイルはこのために作成されています。あなたがそう選択した場合
public function render()
方法では、特定のリダイレクト/ページビューをアプリケーションをキャッチし、実行することができます。
たとえば、アプリケーションでHttpException
年代をキャプチャして、あなたが望んだ場合はエラーページを返すことができます:
public function render($request, Exception $e)
{
//other stuff
if ($e instanceof HttpException) {
return view('errors.general')->withErrors([
'message' => 'The application encountered an error!'
]);
}
return parent::render($request, $exception);
}
特定のPHPエラータイプのワークフローを中断したくない場合は、これらのエラーに対してLaravelによって登録されたエラーハンドラを無効にする必要があります。
Laravelはエラー処理をIlluminate/Foundation/Bootstrap/HandleExceptions.php
に登録します。このブートストラップは、あなたのHttpカーネルが要求を処理するときに呼び出されるいくつかのブートストラップの1つです。
実行する方法はいくつかありますが、最も簡単なのは、このブートストラッパーが呼び出された後に発生するイベントを処理することです。イベントハンドラでは、Laravelで処理したくないエラーのエラーハンドラをリセットできます。あなたのbootstrap/app.php
ファイルで
、右$app
前に次の行を追加しますが返されます。
$app->afterBootstrapping(
'Illuminate\Foundation\Bootstrap\HandleExceptions',
function ($app) {
set_error_handler(function ($level, $message, $file = '', $line = 0, $context = []) {
// Check if this error level is handled by error reporting
if (error_reporting() & $level) {
// Return false for any error levels that should
// be handled by the built in PHP error handler.
if ($level & (E_WARNING | E_NOTICE | E_DEPRECATED)) {
return false;
}
// Throw an exception to be handled by Laravel for all other errors.
throw new ErrorException($message, 0, $level, $file, $line);
}
});
}
);
アップ投票答えは、彼は尋ねたものの反対であること。 私が知る限りでは、エラー報告と画面のレンダリングを引き継ぐことを分離する方法はありません。私はLaravel 5のコードを見てきましたが、まだセットアップを使用してそれらを分割する方法を見つけていません。
すべてのエラー処理を完全に引き継ぎ、すべてのlaravels内部トラッキングを削除するライブラリを作成できますが、オリジナルページエラーが必要な場合はlaravelに戻す必要があります取り扱い。最も簡単な方法は、3番目の部分のエラーハンドラベンダを見つけて、それを修正してすべてのエラーハンドラを引き継ぎ、レンダリングをブロックしないことです。
質問を読み、あなたのニックネームを読んだ後に私が思っていたものだったので、あなたはニックネームをしました:)とにかく、正しい答えが私から+1です。 –