起こっている現象
リクエストバリデーションの他にコントローラー内でチェックを行い、引っかかったら元の画面にreturn viewで返していた。
元のコード
public function store(Request $request)
{
// バリデーション処理
$isCheck = ...;
if($isCheck){
session()->flash('status', 'フォームの内容に問題があります。');
return view('create');
}
}
するとview側でoldヘルパ関数を使っていても値が保持できず消失してしまった。
back()とwithInput()を使用する
view()ではなく、redirect()->back()->withInput()を使用します。
修正後のコード
if($isCheck){
session()->flash('status', 'フォームの内容に問題があります。');
return redirect()->back()->withInput();
}
これでフォームの値を保持することができました。