ブレードテンプレートからコントローラにアレイを渡して、フォームフィールドに処理しようとしています。 configファイルは変更することで簡単にフォームを作成できるように、configの配列は 'テンプレート'のように動作するはずです。ブレードからコントローラへの配列の受け渡し:要素へのアクセス時の未定義インデックス
配列を渡している間に、それが要素(未定義のインデックス)にアクセスすることは不可能です。
私のブレードのテンプレートで設定ファイル(の一部)
return [
'tabs' => [
'Menu' => [
'name' => 'menu',
'type' => 'string',
'length' => 100,
'default' => null
],
...
]
]
私は、コントローラの機能を呼び出すこの配列を繰り返し処理しています:
@foreach($tabs as $key => $fld)
{!! \App\Classes\Fields::createField($key, $fld, $page) !!}
@endforeach
コントローラ(simplyfied):
class Fields
{
public static function createField($key, $fld, $page)
{
var_dump($fld);
// Result-------------------------------
// array (size=4)
// 'name' => string 'menu' (length=4)
// 'type' => string 'string' (length=6)
// 'length' => int 100
// 'default' => null }
var_dump($fld['name']);
// Result-------------------------------
// ErrorException in Fields.php line 19:
// Undefined index: name
// (The other elements also can't be accessed)
}
私は本当に理解していません。 Var_dumpは有効な配列を表示しますが、要素にはアクセスできません。私はいくつかの時間のために私の髪を引っ張っています。これはLaravelのバグですか、私は自分自身をバグですか? ;-)
'$ fld'は' name'、 'type'、' length'、 'default'の4つの要素を含む**配列**です。コードに注意して注意深く読んでください。あなたは$ fld ["name"] 'ではなく' $ fld ["Menu"] ["name"] 'と言っていました。 – Sherif
あなたはforeachに '$ fld'を使い、' {!! \ App \ Classes \ Fields :: createField($ key、$ field、$ page)!!} 'あなたは' $ field'を使います。それを変更。これはあなたの問題を解決します。 – Manish
あなたの 'createField()'静的メソッド内で '$ fld'変数をループすることができますか? 'foreach($ fld as $ k => $ v){var_dump($ k);これは何が起こっているのかを見るのに役立つかもしれません... – Poiz