ひとことでいえば、old関数に二つ引数をいれればOK。
フォーム内の value の後、次のようにoldに2つ引数をいれます。
1 |
value="{{ old(('email'), $user->email) |
{{ old((入力した値), データベースの値) }}
詳しく知りたい方は、下記をどうぞ。
Laravel フォーム更新時に入力エラーでも値を保持する方法
old関数は、エラーが起こったときにそれまでに入力した値を保持するために使います。
新規でデータを登録したときには、引数をひとつだけ入れるだけでOKです。
1 |
value="{{ old('email') }}" |
ただフォームを更新する際には、あらかじめデータベースの値を下記の形で入れておくことが多いです。
1 |
value="{{$user->email}}" |
ここにold関数を付けると、入力エラーがあった場合、それまでにユーザーが入力した値が消え、データベースに登録してある値に戻ってしまいます。
これを解決するには、old関数に引数を二つ入れます。
最初の引数は今回の値、ふたつめの引数にはデータベースの値を入れてあげると、次のようになります。
- デフォルトでは、データベースの値が表示
- 入力エラーが起こると、それまで入力していた値が表示
textareaの値をエラー時に保持する方法
なおtextareaにはvalue属性がないので、<textarea></textare>タグでold関数を囲んであげましょう。
こんな感じです。
1 |
<textarea class="form-control" name="body"cols="30" rows="10">{{old('body')}}</textarea> |
selectの値をエラー時に保持する方法
selectで複数選択肢を用意している場合には、少し面倒です。
optionごとに「もしこの選択肢を以前選んでいたら、これをselectedにしてね」というif文を入れてあげましょう。
下記のような感じです。
無事、エラーが解決されることを願ってます!