質問: routes.phpでルートを設定していないURLへアクセスされた際、/views/errors/404.blade.phpを表示させようと思っていますが、 Controllerを通すことは可能でしょうか? その404.blade.phpの中で、Controllerから渡した変数(例えばログインユーザ名の表示など)の表示をしたいです。
回答: 404.blade.phpでログインユーザ名を表示したいだけならば、 {{ Auth::user()->name }} とすればOKです。 しかし、テンプレートにそれら以外の変数を渡したいのであれば、 app/Exceptions/Handler.php を編集します。 ``` use Symfony\Component\HttpKernel\Exception\HttpException;//7行目あたりに追加 ``` ``` protected function renderHttpException(HttpException $e)//Handlerクラスに追加 { $status = $e->getStatusCode(); $var = "あいうえお"; if (view()->exists("errors.{$status}")) { return response()->view("errors.{$status}", ['exception' => $e,'var'=> $var], $status); } else { return $this->convertExceptionToResponse($e); } } ``` vendor/laravel/framework/Illuminate/Foundation/Exceptions/Handler.php にある親クラスで行っている処理をオーバーライドしています。