2012-08-29 9 views
20

Tengo una validación compleja con mi formulario symfony, y necesito poder asignar un error a un campo específico desde mi controlador. En este momento, tengo errores globales que trabajan de esta manera:Agregando un error específico de campo desde el controlador en symfony2

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

Pero eso crea un error global, no un salto a un campo específico.

¿Hay alguna manera de arrojar un error en un campo específico desde mi controlador?

Respuesta

44

Gracias a un poco de ayuda sobre IRC (gracias @fkrauthan!) Se me ocurrió una respuesta.

Cada campo en SF2 es en realidad una instancia de formulario. Lo que debe hacer es acceder al objeto de formulario del campo y agregarle el error. Afortunadamente, symfony proporciona un método para obtener un formulario/campo incrustado.

Aquí está mi código:

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

Como algunas personas han señalado, se tendrá que incluir la clase formerror en la parte superior de su archivo: use Symfony\Component\Form\FormError;

+0

Nice! :) ¿Podrías aceptar tu respuesta? –

+0

El desbordamiento de pila no le permite aceptar su propia respuesta durante los primeros 2 días. – MrGlass

+0

Ah, eso es correcto. Simplemente no olvides hacerlo más tarde;) –

Cuestiones relacionadas