バリデーション失敗時に、入力値を残す
HTTP Requests - Laravel - The PHP Framework For Web Artisans の Old Input を利用します。入力値をセッションに記録(flush)するものです。
バリデーションの失敗時には、Laraveが自動的に記録してくれるので何もしなくても使えます。
Bladeテンプレートからは以下のように参照できます。
<input type="text" name="username" value="{{ old('username') }}">
コントローラーからは以下のように参照できます。
$request->old('username');
次の画面に入力値を受け渡す
バリデーション失敗時ではなく、次の画面で入力されたデータを確認のために表示したい場合などは、以下を呼び出せば同じくoldで参照できます。
$request->flash();
全てのデータではなく、指定のデータのみ引き継ぎたい場合や、除外したい場合は以下です。
// usernameとemailのみ、次に引き渡す $request->flashOnly(['username', 'email']); // passwordは渡さない $request->flashExcept('password');
リダイレクトと同時に記録するには withInput() を呼びます。
// formに入力値全てを受け渡す return redirect('form')->withInput(); // 入力値のうち、passwordだけ除外して、引き渡す return redirect('form')->withInput($request->except('password'));
成功した時に、次の画面で値を消すには?
自動的に消えるので、特に何もする必要はありません。
エラーをBladeで判定
Laravel5.2では、以下で動きました。name属性についてのエラーがあるかを確認して、あれば bootstrapのhas-errorクラスを追加することで、該当するグループを赤く目立たせます。
<div class="form-group @if(!empty($errors->getBag('default')->first('name'))) has-error @endif"> : </div>