我試圖從刀片模板傳遞一個數組(源自自定義配置文件)到控制器以將其處理爲表單字段。配置數組應該像'模板'一樣,以便通過更改配置文件輕鬆創建表單。將陣列從刀片傳遞到控制器:訪問元素時未定義的索引
雖然傳遞數組似乎工作,我不可能訪問它的元素(未定義索引)。
(的一部分)的配置文件
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'是一個**數組**,它包含4個元素,它們具有'name','type','length'和'default'鍵。注意你的代碼並仔細閱讀。你打算說'$ fld [「Menu」] [「name」]'而不是'$ fld [「name」]''。 – Sherif
你在foreach中使用了'$ fld'和'{!! \ App \ Classes \ Fields :: createField($ key,$ field,$ page)!!}'你使用'$ field'。更改。這將解決您的問題。 – Manish
你可以試着在你的'createField()'靜態方法中通過'$ fld'變量循環:看看你得到了什麼? 'foreach($ fld as $ k => $ v){var_dump($ k); var_dump($ v);};'這可以幫助看看發生了什麼...... – Poiz