フォームでエラー時に入力値を保持する方法(Laravel5.7)
2019年02月07日
Laravel5.7で、フォームを作っていてエラー発生時に入力のフォームの値を保持する方法についてです。
結論からいうと、bladeテンプレートに {{ old(‘項目名’) }} の値をもたせることで入力前の値を保持できます。
こんなかんじです。
<table class="table table-striped"> <tr> <td>タイトル</td> <td><input type="text" name="title" value="{{ old('title') }}" placeholder="タイトルが入ります" /></td> </tr> <tr> <td>本文</td> <td><textarea name="body">{{ old('body') }}</textarea></td> </tr>
これは、入力値のフォームなので、はじめは空欄なので、入力前の値だけ保持できていればいいですが、これが編集する場合だと
初期) 編集前の値を持っている
エラー時) 入力エラーの値を持っている
の2つの状態を持っている必要があります。
これは以下のように記述することで解決できます。
<table class="table table-striped"> <tr> <td>タイトル</td> <td><input type="text" name="title" value="{{ old('title' , $post->title) }}" /></td> </tr> <tr> <td>本文</td> <td><textarea name="body">{{ old('body', $post->body) }}</textarea></td> </tr>
oldの2つ目にデフォルト値を持たせることができます。