1

In einem Projekt habe ich ein riesiges Formular - mit vielen Feldern, verschachtelten Feldsets, Sammlungen usw. Die Formularvalidierung schlägt fehl und ich weiß nicht, warum.Wie Debuggen eines Zend Form?

Wie sollte ein solches Problem behandelt werden? Was ist ein guter und effizienter Ansatz, um herauszufinden, warum eine Formularvalidierung fehlschlägt?

+1

nach 'isValid' können Sie die Fehler mit' $ form-> getMessages() 'holen. – AlexP

+0

können Sie auch einen Debugger wie xdebug verwenden – Unex

+0

@AlexP Ich bin mir nicht sicher, dass es immer hilft. Z.B. in meinem Fall: Ich habe die Klasse ['Zend \ Form # isValid()'] (https://github.com/zendframework/zend-form/blob/master/src/Form.php#L523) in der Ort, wenn die Validierung abgeschlossen ist und die Nachrichten erwartet. Aber 'Order \ Form \ OrderForm # messages' war leer. Das '$ result' ist' false' und die '$ messages' sind leer. – automatix

Antwort

0

Endlich habe ich einen Weg gefunden, den Validierungsfehler (-s) zu erkennen, ohne jedes (Sub-Sub-Sub-) Fieldset und jedes (Sub-Sub-Sub-) Element zu debuggen. Es ist einfach $form->getMessages(). Oder alternativ $this->FormElementErrors($form) im View-Skript.

Wusste ich schon früher von diesen Methoden? Klar, habe ich getan. Aber ich war wenig Gedanken über die Art und Weise, wie es funktioniert, und die Eigenschaft messages führte mich in die Irre:

Als ich Validierung Probleme bekam, habe ich einen Haltepunkt irgendwo nach dem Zend\Form#isValid() Anruf und sah dann in Xdebug, dass Zend\Form#messages Eigenschaft war leer . Und ich war überrascht, weil eine Eigenschaft "Nachrichten" darauf hinweist, dass es (Validierungsfehler) Nachrichten enthalten wird. Diese Logik gilt für in Elements - und ein Form tatsächlich ist einElement (seit FormextendsFieldsetextendsElement).