2017-06-15 3 views
0

Ich benutze Laravel 5.4 und Laravel Collective Formular & HTML Builder (https://laravelcollective.com/docs/5.4/html).Laravel 5.4 multiple (dynamische) Form & eckige Klammern

Ich habe eine dynamische Form, wie folgt aus: https://codepen.io/matedon/pen/BZQymW

Es gibt mehrere Eingabefelder mit demselben Namen, aber mit eckigen Klammern:

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

mit dem Formular des Laravel Collective & HTML Builder der Ausgang und der alte() Wert sollte sein:

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

Aber es gibt ein Problem, und ich habe t sein:

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

ich auch Laravel die "native" Lösung versucht, die falsch ist auch:

@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" 
    ] 
] 

Was könnte die Lösung sein? Vielen Dank!

+0

Ich dachte 'alt' nur auf Sitzung Flash-Daten angewendet – apokryfos

Antwort

0

Sie fehlen nur in den Bau der Eingänge, falls Sie so etwas wie dies wollen:

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

Ihre Eingaben aussehen sollte:

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

Wenn Sie brauchen, um sie getrennt werden Nach der Wohnung müssen Sie eine Art Index hinzufügen (da es sich um ein dynamisches Formular handelt, müssen Sie den aktuellen Index irgendwo in Ihrer Anwendung speichern):

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

Ihre Eingaben:

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

Beachten Sie, dass dies nicht der Rahmen Fehler, es ist mehr eine Formstruktur Thema. Wenn Sie weitere Informationen zum Erstellen von Formular-Datasets benötigen, empfehlen wir Ihnen, W3C HTML5 Forms section zu überprüfen.

Hoffe das hilft dir.