2017-06-15 48 views
0

我使用Laravel 5.4和Laravel Collective的表單& HTML Builder(https://laravelcollective.com/docs/5.4/html)。Laravel 5.4多個(動態)表單和方括號

我有一個動態的形式,像這樣: https://codepen.io/matedon/pen/BZQymW

有名稱相同但方括號多個輸入字段:

<input name="apartments[][price]"> 
<input name="apartments[][rooms]"> 
<input name="apartments[][price]"> 
<input name="apartments[][rooms]"> 

隨着Laravel集體的形式& HTML生成器輸出和舊的()值應該是這樣的:

{ 
    "apartments": [ 
     { 
      "price": "23000", 
      "rooms": "12" 
     }, 
     { 
      "price": "42000", 
      "rooms": "32" 
     } 
    ] 
} 

但是有一個問題,我得到了他:

@php(dump(Form::old('apartments'))) 
array:1 [▼ 
    "price" => "23000" 
] 

我也試過Laravel的 「原生」 的解決方案這是錯誤太:

@php(dump(session()->getOldInput('apartments'))) 
array:4 [▼ 
    0 => array:1 [▼ 
     "price" => "23000" 
    ] 
    1 => array:1 [▼ 
     "rooms" => "12" 
    ] 
    2 => array:1 [▼ 
     "price" => "42000" 
    ] 
    3 => array:1 [▼ 
     "rooms" => "32" 
    ] 
] 

如何解決可能呢? 謝謝!

+0

我以爲老'只適用於會話閃存數據 – apokryfos

回答

0

你只是缺少的投入建設,如果你想是這樣的:

"apartments" => array:2 [ 
    "price" => array:2 [ 
    0 => "52.5" 
    1 => "65" 
    ] 
    "rooms" => array:2 [ 
    0 => "3" 
    1 => "4" 
    ] 
] 

你的投入應該是這樣的:

<input name="apartments[price][]"> 
<input name="apartments[rooms][]"> 
<input name="apartments[price][]"> 
<input name="apartments[rooms][]"> 

如果你需要他們分開由公寓裏,你需要添加一些類型的索引(因爲它是一個動態的形式,你可能需要保留的地方存儲在您的應用程序的當前指數):

"apartments" => array:2 [ 
    1 => array:2 [ 
    "price" => "52.5" 
    "rooms" => "3" 
    ] 
    2 => array:2 [ 
    "price" => "65" 
    "rooms" => "4" 
    ] 
] 

你輸入:

<input name="apartments[1][price]"> 
<input name="apartments[1][rooms]"> 
<input name="apartments[2][price]"> 
<input name="apartments[2][rooms]"> 

請注意,這不是框架的錯,它更是一個形式的結構問題。如果您需要更多關於如何構建表單數據集的信息,我建議您檢查W3C HTML5 Forms section

希望這可以幫助你。