Hinzufügen eines feldspezifischen Fehlers vom Controller in Symfony2
Lesezeit: 1 Minute
MrGlass
Ich habe eine komplexe Validierung mit meinem Symfony-Formular, und ich muss in der Lage sein, einem bestimmten Feld meines Controllers einen Fehler zuzuweisen. Im Moment habe ich globale Fehler, die wie folgt funktionieren:
$error = new formerror("There is an error with the form");
$form->addError($error);
Aber das erzeugt einen globalen Fehler, nicht einen, der an ein bestimmtes Feld gebunden ist.
Gibt es eine Möglichkeit, einen Fehler in einem bestimmten Feld von meinem Controller auszugeben?
MrGlass
Dank etwas Hilfe über IRC (danke @fkrauthan!) kam ich zu einer Antwort.
Jedes Feld in SF2 ist eigentlich eine Instanz des Formulars. Was Sie tun müssen, ist, auf das Formularobjekt des Felds zuzugreifen und dann einen Fehler hinzuzufügen. Glücklicherweise bietet Symfony eine Methode, um ein eingebettetes Formular/Feld zu erhalten.
Hier ist mein Code:
$error = new FormError("There is an error with the field");
$form->get('field')->addError($error);
Wie einige Leute darauf hingewiesen haben, müssen Sie die Klasse FormError oben in Ihre Datei einfügen: use Symfony\Component\Form\FormError;
Stapelüberlauf lässt Sie Ihre eigene Antwort in den ersten 2 Tagen nicht akzeptieren.
– MrGlass
29. August 2012 um 11:58 Uhr
Was muss ich oben als USE angeben, um die Formerror-Klasse richtig verwenden zu können?
– Matt Welander
31. Juli 2013 um 14:33 Uhr
Sie müssen die ‘use’-Anweisung nicht wirklich verwenden. Sie müssen nur den vollständigen Qualifizierer nach neu bestehen. $error = new \Symfony\Component\Form\FormError(“Es gibt einen Fehler mit dem Feld”);
– ctatro85
2. Dezember 2014 um 18:34 Uhr
Das gilt auch 2019 für Symfony 4
– Jonathan Holvey
12. August 2019 um 2:05 Uhr
@Chris Der Controller wird fortgesetzt, aber das Formular sollte jetzt als ungültig markiert werden.
– MrGlass
4. Februar 2020 um 18:58 Uhr
11292000cookie-checkHinzufügen eines feldspezifischen Fehlers vom Controller in Symfony2yes