Laravel(blade)のフォームでエラー時の値を保持する方法

2024.06.11 09:00
2024.06.06 18:28
Laravel(blade)のフォームでエラー時の値を保持する方法

laravelとbladeでフォームを作った時のエラー処理のお話です。
エラーで入力画面に戻ってきた際、問題ない値はフォームに入力されていてほしいですね。
bladeなら「old」を使うと簡単にできるみたいです。
なのでやってみました。

こんな感じです。

<input type="text" name="kana" value="{{ old('kana', '') }}">

valueの部分に「{{ old(‘name’, ”) }}」を指定しました。
これでエラーで戻ってきても自動で入力されている状況を作れます。

oldの第一引数にそのフォームの変数名を入れます。ここだと「kana」になりますね。
第二引数に入力前の初期値を入れます。通常は空白でいいでしょう。

フォームの変数名に配列を使う場合はこんな感じ。

<input type="text" name="contact[kana]" value="{{ old('contact.kana', '') }}">

フォームが2つ以上あったり、複雑なデータ構造の場合は便利そうです。

他にも、radioの場合はこんな感じでcheckedを入れてあげます。

{{ old ('gender', '') == '男性' ? 'checked' : '' }}

全部書くとこんな感じです。

<input type="radio" value="男性" id="male" {{ old ('gender', '') == '男性' ? 'checked' : '' }}>
<label for="male">男性</label>

<input type="radio" value="女性" id="female" {{ old ('gender', '') == '女性' ? 'checked' : '' }}>
<label for="female">女性</label>

これで選択された方にだけcheckedがつきますね。
入力がvalueの値と同じならcheckedをつけるということです。
ちなみにcheckboxやselectも同じ発想です。

今回は以上です!