array input wie name="person[]" in zend form
In normalen html -, hätten wir ein array-Feld wie person[]
<input name="person[]" type="text" />
<input name="person[]" type="text" />
<input name="person[]" type="text" />
Soweit ich weiß, Zend_Form nicht haben, dass. Ich lese eine andere Antwort, die vorgeschlagen, dass es getan werden könnte, mit einem Dekorator, das wäre die []
an der richtigen Stelle. Dies ist der code für eine bestimmte Frage
$html = ''; //some code html
$i = 0;
foreach ($element->getMultiOptions() as $value => $label){
$html .= '<input type="checkbox" '
. 'name="'.$element->getName().'[]" '
. 'id="'$element->getName()'-'.$i.'" '
. 'value="'.$value.'" />';
$i++;
}
return $html;
Dieser sieht aus wie ein guter Anfang, aber ich Frage mich, wenn Sie mit einem decorator ist genug. Die Werte, bekommen zurück haben richtig gelesen werden und an den server, dann überprüft der server-Seite. So ist ein Dekorateur die falsche Idee? Würde ein benutzerdefiniertes element machen mehr Sinn hier? Ich habe nicht gesehen, ein gutes Beispiel, dass zeigt, wie dies getan werden kann.
- Check manual: framework.zend.com/manual/en/zend.form.advanced.html
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass ZF nicht erlauben, für die Bildung der einzelnen input-text-Felder mit den Namen
person[]
, obwohl Sie es tun könnten für das gesamte Formular oder ein Unterformular. Allerdings kann es für etwas ähnliches. Speziell, Sie könnten Felder mit dem Namenperson[0]
,person[1]
usw.Um dies zu tun, können Sie das folgende tun:
So könnten Sie in der Regel fügen Sie Ihre Prüfungen, Filter, etc. um $1 oder $in2, und Sie würde funktionieren wie erwartet. In Ihrer Aktion, nach der form der Validierung, konnte Sie bekommen ein array von person-input-text-Feldern als:
Interessanterweise werden die folgenden NICHT Arbeit:
Hoffe, dies wird Ihnen helfen.
person[]
ist dynamisch. Nehmen Sie dieses Szenario: Sie Fragen den Benutzer nach E-Mails von seinen Freunden, aber Sie präsentieren ihn nur 1<input>
und eine Schaltflächeadd one more
wenn er will, um mehr hinzuzufügen. Dieadd one more
Schaltfläche ist nur ein javascript, mit der zusätzliche<input>
auf das Formular. Die Anzahl der Zeiten, die die Benutzer aufadd one more
ist unbekannt. Ohne zend_form, ich habe gerade mitperson[]
für diese senden Sie dann an das backend für die Validierung. Für dieses Feld habe ich in einer Schleife alle array und überprüfen Sie jeden.