PHP

【Laravel】フォームの入力・選択内容を保持する方法【oldヘルパー】

Laravelの登録・更新フォーム画面でinputにテキスト入力したり、selectで選択をし登録を行おうとした際にバリデーションチェックでエラーになると登録フォーム画面で入力・選択内容が未入力状態になります。その際、登録フォーム画面で入力・選択した値を保持した状態にする方法をご紹介します。

登録フォーム画面(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>

更新フォーム画面(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系 で確認した内容になります。
※流用される場合は自己責任でお願いします。