问题
I am using Symfony2 and FOSUserBundle.
Just as detailed in the documentation, I have overridden and created a "name" property in the User entity.
I do all necessary and finally get that field to be shown in the form view.
The thing is: when I go form_widget(form.name)
and the input html tag is generated, a required="required" property is generated within it. And that causes the engine to red the input when the field is not filled in.
How do I do to tell the Symfony2 not to make that field mandatory? I guess that it has to be here:
parent::buildForm($builder, $options);
// add your custom field
$builder->add('name', 'text', array('label' => 'form.name'));
$builder->remove('username');
or here:
/**
* @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;
回答1:
$builder->add('name', 'text', array('label' => 'form.name','required' => false));
回答2:
use Symfony\Component\Validator\Constraints\NotNull;
$builder->add('name', 'text', array('label' => 'form.name', 'constraints' => new NotNull()));
来源:https://stackoverflow.com/questions/11868497/force-a-field-to-not-be-required