2012-08-08 6 views
20

Estoy usando Symfony2 y FOSUserBundle.Forzar que no se requiera un campo

Tal como se detalla en la documentación, he reemplazado y he creado una propiedad de "nombre" en la entidad Usuario.

Hago todo lo necesario y finalmente consigo que ese campo se muestre en la vista de formulario.

La cosa es: cuando voy form_widget(form.name) y se genera la etiqueta html de entrada, se genera una propiedad required = "required" dentro de ella. Y eso hace que el motor rojo la entrada cuando el campo no está lleno.

¿Cómo hago para decirle a Symfony2 que no haga obligatorio ese campo? Supongo que tiene que estar aquí:

 parent::buildForm($builder, $options); 

    // add your custom field 
    $builder->add('name', 'text', array('label' => 'form.name')); 
    $builder->remove('username'); 

o aquí:

/** 
* @ORM\Column(type="string", length="255") 
* 
* @Assert\MinLength(limit="0", message="The name is too short.", groups={"Registration", "Profile"}) 
* @Assert\MaxLength(limit="255", message="The name is too long.", groups={"Registration", "Profile"}) 
*/ 
private $name; 

Respuesta

47
$builder->add('name', 'text', array('label' => 'form.name','required' => false)); 
+5

+1 - Tal vez lo que hay que añadir que esto sólo se detiene el HTML5 validación en el elemento de formulario. Todos los asertos, etc. de su entidad todavía están activados y aún deben ser válidos antes de que la entidad pueda ser persistente. – insertusernamehere

+3

¿Hay alguna manera de hacerlo, a través de grupos de validación? Parece que no puedo hacer que afecten los atributos requeridos html5, lo que hace que los grupos de validación sean inútiles para mí. –

Cuestiones relacionadas