2012-08-29 12 views
20

Ho qualche convalida complessa in corso con il mio modulo symfony e devo essere in grado di assegnare un errore a un campo specifico dal mio controller. In questo momento, ho errori globali che lavorano in questo modo:Aggiunta di un errore specifico del campo dal controller in symfony2

$error = new formerror("There is an error with the form"); 
$form->addError($error); 

ma che crea un errore globale, non uno legato a un campo specifico.

C'è un modo per lanciare un errore su un campo specifico dal mio controller?

risposta

44

Grazie a qualche aiuto su IRC (grazie a @fkrauthan!) Ho trovato una risposta.

Ogni campo in SF2 è in realtà un'istanza di forma. Quello che devi fare è accedere all'oggetto modulo del campo e aggiungere quindi l'errore su di esso. Fortunatamente, symfony fornisce un metodo per ottenere un modulo/campo incorporato.

Heres il mio codice:

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

Come alcune persone hanno fatto notare, è necessario includere la classe FormError nella parte superiore del file: use Symfony\Component\Form\FormError;

+0

Nizza! :) Potresti accettare la tua risposta? –

+0

L'overflow dello stack non consente di accettare la propria risposta per i primi 2 giorni. – MrGlass

+0

Ah, giusto. Non dimenticarti di farlo più tardi;) –

Problemi correlati