正しい方法かわからないけども、解決方法として。
例えば、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回呼び出すと、前のセッションがなくなるから、バリデーションのエラーメッセージとかが取得できなくなる。