Laravelの登録・更新フォーム画面でinputにテキスト入力やselectで選択を行い、入力・選択内容登録を行おうとした際にバリデーションチェックでエラーになると登録フォーム画面で入力・選択内容が未入力状態になります。その際、登録フォーム画面で入力・選択した値を保持した状態にする方法をご紹介します。
oldヘルパーを使った登録フォーム画面(viewファイル)
※登録フォーム画面(viewファイル)の項目に入力・選択後、バリデーションチェックが行われた場合に入力・選択した値を保持(valueに設定)します。
inputタグ
value属性に
old(‘name属性の設定名’)
を設定します。
<input type="text" name="address" value="{{ old('address') }}">
textareaタグ
※textareaの開始タグと終了タグの間に
old(‘name属性の設定名’)
を設定します。
<textarea name="bikou">{{ old('bikou') }}</textarea>
selectタグ
選択した(value)値がある場合、該当のoptionタグがselectedとなるように設定します。
<select name="sex">
<option value="">性別を選択</option>
<option value="man" @if( old('sex') === 'man' ) selected @endif>男</option>
<option value="woman" @if( old('sex') === 'woman' ) selected @endif>女</option>
</select>
oldヘルパーを使った更新フォーム画面(viewファイル)
※登録フォーム画面(viewファイル)とほぼ同じですが、更新フォーム画面(viewファイル)にてバリデーションチェックが行われる前のデフォルト値もvalueに設定します。
inputタグ
value属性に
old(‘name属性の設定名’,データベース(userテーブル)から取得した値)
を設定します。
<input type="text" name="address" value="{{ old('address', $user->address) }}">
textareaタグ
textareaの開始タグと終了タグの間に
old(‘name属性の設定名’,データベース(userテーブル)から取得した値)
を設定します。
<textarea name="naiyo">{{ old('bikou', $user->bikou) }}</textarea>
selectタグ
デフォルト(value)値または選択した(value)値がある場合、該当のoptionタグがselectedとなるように設定します。
<select name="sex">
<option value="">性別を選択</option>
<option value="man" @if( old('sex') === 'man' ) selected @endif>男</option>
<option value="woman" @if( old('sex') === 'woman' ) selected @endif>女</option>
</select>
<select name="sex">
<option value="">選択して下さい</option>
<option value="man" @if( old('sex', $user->sex) === 'man' ) selected @endif>男</option>
<option value="woman" @if( old('sex', $user->sex) === 'woman' ) selected @endif>女</option>
</select>
※Laravelのバージョン 6系 で確認した内容になります。
※流用される場合は自己責任でお願いします。