2016-10-04 4 views
0

Ich habe ein Array von multi-dimensionalen Array, das meine Form darstellt jede Ebene stellt ein untergeordnetes Formular dar, bis Sie zu einem Feld gelangen.Mehrdimensionales Array-Traversal mit Symfony Form Validation

Ich möchte in der Lage sein, dieses Array zu verfolgen, wo ich weiß, wo ich war, also fahre ich nicht mehr als einmal den gleichen Weg.

Jeder Array-Schlüssel ist im Wesentlichen ein $form->get($key). Es gibt einige Felder, die identisch benannt sind, aber unterschiedliche Routen haben (im folgenden Bild rot hervorgehoben).

Gibt es einen einfachen Weg, dies zu erreichen?

enter image description here

Dank

+0

Was hält von Ihnen einfach das Array iterieren? –

+0

Es müsste eine rekursive Funktion sein? – Kal

+0

Ja, ich denke schon. –

Antwort

0

Das ist mein fix ist. Ich habe eine Formular-Map erstellt, die aus der Anzahl der Felder mit jeweils untergeordneten Arrays für den Pfad zum Element und den Fehler besteht.

Ich Schleife dann über sie und passiere sie durch Symfonys mapViolation Methode in Symfony\Component\Form\Extension\Validator\ViolationMapper\ViolationMapper.

ist hier komplette Klasse: https://gist.github.com/linxlad/3ec76c181f717fba532bf43484b7c970