

routes.phpでルートを設定していないURLへアクセスされた際、/views/errors/404.blade.phpを表示させようと思っていますが、  
Controllerを通すことは可能でしょうか？

その404.blade.phpの中で、Controllerから渡した変数（例えばログインユーザ名の表示など）の表示をしたいです。


CC BY-SA 3.0
2016-01-10T14:02:38.520
20807
2016-01-11T02:12:25.750
13964
question
php laravel
Laravel5.1 404.blade.phpで変数を使用する方法


404.blade.phpでログインユーザ名を表示したいだけならば、  
{{ Auth::user()->name }}  
とすればOKです。

しかし、テンプレートにそれら以外の変数を渡したいのであれば、  
app/Exceptions/Handler.php を編集します。

[code]

    use Symfony\Component\HttpKernel\Exception\HttpException;//7行目あたりに追加
    
[/code]

[code]

    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);
        }
    }
    
[/code]

vendor/laravel/framework/Illuminate/Foundation/Exceptions/Handler.php  
にある親クラスで行っている処理をオーバーライドしています。


CC BY-SA 3.0
2016-01-11T02:12:25.750
20816
2016-01-11T02:12:25.750
13968
20807
answer