1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel5 例外ハンドラで指定した遷移先ページでセッションを使う方法

Last updated at Posted at 2016-05-28

正しい方法かわからないけども、解決方法として。

例えば、404ページ内でセッションを使うことを考える。

Laravelでの404ページの出力

例外をつかんだ後の遷移先のページの指定は、app/Http/Kernel.phpで指定できる。

app/Http/Kernel.php
省略

public function render($request, Exception $e)
    {
      $status = $e->getStatusCode();
      if($status == 404){
        return response()->view("errors.404", ['exception' => $e,'previous' => URL::previous()], $status);
      }else{
        return parent::render($request, $e);
    }

省略

こんな風にすれば、指定した遷移先へ飛ぶ。

しかし、指定した遷移先でセッションを使おうとするとなぜか使えない。

解決方法

同じく、app/Http/Kernel.php に \Illuminate\Session\Middleware\StartSession::class を以下のように追加する。

app/Http/Kernel.php
protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Session\Middleware\StartSession::class, // これを追加
    ];

これで使えるようになる。

注意

\Illuminate\Session\Middleware\StartSession::class を1度に2回呼び出すと、前のセッションがなくなるから、バリデーションのエラーメッセージとかが取得できなくなる。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?