laravelのbladeのフォームでPOSTしたあとにバリデーションなどで同じ画面に戻ってくるときに、oldメソッドを使って値を保持しますよね。
そのとき、POSTのパラメータを配列にしている場合、どのようにoldで値をinputタグのvalueにセットすればいいのでしょう?
答えはドットでつなぐだけです!
ドットで多重配列を指定する
単純にこのように指定するだけです。
連想配列のような配列のキーに名前をつけない場合は、キーが数値になります。
それをドットで繋げばOKです。
inputタグのvalueにこのようにセットしてください。
<input type="text" name="user[]" value="{{ old('user.0') }}" />
<input type="text" name="user[]" value="{{ old('user.1') }}" />
ドットで多重配列の連想配列を指定する
連想配列でパラメータをセットすることも多いですよね。
その場合は配列のキー名をドットで繋げばOKです。
<input type="text" name="user[email]" value="{{ old('user.email') }}" />
意外に日本語の公式リファレンスになくて困るんですよね。
foreachでoldの値をループさせたいとき
@foreach (old('test') as $item)
<input type="text" name="test[]" value="{{ old("test.$item") }}" />
@endforeach
こうできたらめちゃくちゃいいですよね。
でもこれは動きません! エラーになるはずです。
old(‘test’)としても配列が取得できるわけではないようです。
もし、配列の数が決まっているなら@foreachではなく@forを使うとできます。
@for ($i=0; $i<3; $i++;)
<input type="text" name="test[]" value="{{ old("test.$i") }}" />
@endforeach
ひと工夫が必要になります。
今回は以上です!
Laravel上達の近道
Laravelで稼げる中級エンジニアになるための動画教材