HTML-Formular: POST ein array von Objekten
Einreichung einer Klasse Dienstplan. Hinzufügen 3 Schüler auf einmal. Jeder student hat Vorname, Nachname, Alter.
Frage: Wie können wir alle von den Studenten in ein array von arrays?
students[0] => Array (
["first"] => "first name for 0",
["last"] => "last name for 0",
["age"] => "age for 0"
),
students[1] => Array (
["first"] => "first name for 1",
["last"] => "last name for 1",
["age"] => "age for 1"
),
...
Details
Für einen Schüler:
<input type="text" name="first">
<input type="text" name="last">
<input type="text" name="age">
Wir zurückkehren können mehrere Schüler in separate arrays wie dieses:
<input type="text" name="students[first][]">
<input type="text" name="students[last][]">
<input type="text" name="students[age][]">
gibt eine Reihe von Premieren, von der Dauer und Altersgruppen
students["first"] = [array of first names]
students["last"] = [array of last names]
students["age"] = [array of ages]
Können wir theoretisch bekommen alle Infos, die für einen Studenten mit Zugriff auf den gleichen index (z.B. "3" für jedes array).
Wollen wir nicht programmgesteuert fügen Sie einen index in der form.
Wollen nicht:
<input type="text" name="students[hardcoded_index][first]">
<input type="text" name="students[hardcoded_index][last]">
<input type="text" name="students[hardcoded_index][age]">
Wenn aus irgendeinem Grund es ist wichtig, wir sind mit Schienen für die Aussicht, sondern können von Helfern oder HTML.
Du musst angemeldet sein, um einen Kommentar abzugeben.
tl;dr: Hinzufügen von leeren Klammern (
[]
) nachstudents
zu den input-Namen.Hantieren mit Rack::Utils.parse_nested_query es scheint, Sie können Holen Sie sich die Nutzlast, die Sie wollen, wie diese:
Beachten Sie die leeren Klammern (
[]
) nachstudents
. Dies sagt Rack Sie möchten diestudents
param ein array. Nachfolgende Parameter festgestellt (mit dem gleichen Namen) wird der Beginn eines neuen Elements.POST /myroute?students[][first]=foo&students[][last]=bar&students[][age]=21&students[][first]=baz&students[][last]=qux&students[][age]=19
Wird analysiert, wie diese:
Weiter Lesen: http://codefol.io/posts/How-Does-Rack-Parse-Query-Params-With-parse-nested-query
controller.create
Methode (mit Bindung.pry), wenn ich seheparams
es zeigt ein array von den Schülern, sondern enthält NUR einen hash in es - nur die letzten Schüler die hash - die früheren Schüler fehlen innen die params. Was mache ich hier falsch?Für diejenigen, die wollen Prozess die Daten in einer PHP-Umgebung ,
@messanjah Methode wird nicht funktionieren ,
Methoden für die Analyse von Daten, wie die built-in
serializeArray
oderserialize
sind nicht Analyse es wie erwartet entweder.Dies ist, was ich bisher ausprobiert ...
students[name]
students[][name]
- Sehr Seltsam, da es vorgesehen war automatisch der index des arraystudents[name][]
Keiner von Ihnen gearbeitet, aber das
students[<hardcoded-index>][name]
arbeitete für PHP ,Den Methode Sie wählen, um die Festplatte code Indizes ist bis zu Ihnen , die Sie verwenden können, eine sauberere Methode, indem Sie javascript oder Sie können manuell Festplatte code Sie zunächst in Ihrem form-element.
Cheers