2012-08-29 3 views
20

Ich habe einige komplexe Validierung mit meiner symfony Form, und ich muss in der Lage sein, einen Fehler zu einem bestimmten Feld von meinem Controller zuzuordnen. Im Augenblick habe ich globale Fehler, die so arbeiten:Hinzufügen eines feldspezifischen Fehlers von der Steuerung in symfony2

Aber das verursacht einen globalen Fehler, nicht einer, der an ein spezifisches Feld gebunden wird.

Gibt es eine Möglichkeit, einen Fehler in einem bestimmten Feld von meinem Controller zu werfen?

Antwort

44

Dank einiger Hilfe über IRC (danke @fkrauthan!) Kam ich auf eine Antwort.

Jedes Feld in SF2 ist eigentlich eine Instanz der Form. Sie müssen auf das Formularobjekt des Felds zugreifen und dann einen Fehler hinzufügen. Zum Glück bietet Symfony eine Methode, um ein eingebettetes Formular/Feld zu erhalten.

Heres mein Code:

$error = new FormError("There is an error with the field"); 
$form->get('field')->addError($error); 

Da einige Leute darauf hingewiesen haben, müssen Sie die FormError Klasse am Anfang der Datei enthalten: use Symfony\Component\Form\FormError;

+0

Nice! :) Könnten Sie Ihre Antwort akzeptieren? –

+0

Der Stapelüberlauf lässt Sie Ihre eigene Antwort für die ersten 2 Tage nicht akzeptieren. – MrGlass

+0

Ah, das stimmt. Vergiss nicht, es später zu tun;) –