前提・実現したいこと
いつもお世話になっております。
Laravelのbladeでoldが取得できない原因を解決したいです。
発生している問題・エラーメッセージ
①入力フォームをbladeで用意しています。
入力フォームの構造です。
商品グループ1 商品名(item_name):テキストボックス 追加ボタン 商品グループ2 商品名(item_name):テキストボックス 追加ボタン 商品グループ1、商品グループ2のそれぞれindexを1、2と定義しておきます。 商品グループ1、商品グループ2には追加ボタンがあり、それぞれのグループに商品名のフォームを動的に追加できます。
②登録処理を行ってcontroller側でPOSTバリデーションを実施し、エラーとなり、フォームの入力画面に戻ってきた時にoldで入力フォームのテキストボックス内に入力値をセットしたいのですが、ここでエラーが発生します。
エラー: Undefined index: item_name
該当のソースコード
bladeのコードです。
Laravel
1/* 一つ目の商品名のフォームです。なので [0][item_name] / 0.item_name となっています。 */ 2/* 一つ目なので $index = 1 となります。 3/* 追加ボタンが押され、二つ目の商品名のフォームになると [1][item_name] / 1.item_name となっていきます。 */ 4{{ 5 Form::text( 6 "item_group[$index][0][item_name]", 7 old('item_group.' . $index . '.0.item_name') ?? '', 8 [ 9 'required', 10 'class' => 'input-field' 11 ] 12 ), 'error_form') 13}}
old()でデバッグ
old()をbladeでdd()すると以下のようになっています。
"item_group" => array:1 [▼ 1 => array:1 [▼ 0 => array:1 [▼ "item_name" => "商品名" // 例えば "チョコレート" とかが入ってきます。 ] ] ]
試したこと
①該当のソースコードと同じで old('item_group.' . $index . '.0.item_name')
②別の方法で、 old("item_group.$index.0.item_name")
いずれも エラー Undefined index: item_name
が出ます。
なお、bladeでdd()すると取得できています。
Laravel
1/* bladeでdd()するといずれの方法でも入力値をstringで取得できている */ 2@php dd(old('item_group.' . $index . '.0.item_name')); @endphp 3 4@php dd(old("item_group.$index.0.item_name")); @endphp
Form内でやると失敗するのでしょうか。。。
補足情報(FW/ツールのバージョンなど)
Laravel 5.6
PHP 7.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。