为什么我的选择字段仍然是必需的?

sto*_*fln 4 forms symfony

我的联系人实体中有一些字段:

/**
 * @ORM\Column(type="string", length=6, nullable=true)
 * @Assert\Choice(choices = {"male", "female"})
 */
 protected $gender;
Run Code Online (Sandbox Code Playgroud)

以及用于创建联系人的表单:

$builder->add('firstName')
                ->add('lastName')
                ->add('email')
                ->add('gender','choice',array(
                        'choices'   => array('male' => 'male', 'female' => 'female'),
                        'required'  => false,
                    ));
Run Code Online (Sandbox Code Playgroud)

这应该导致非必填字段 AFAIK。表格仍然告诉我我必须选择性别。有任何想法吗?

Alt*_*PHP 5

您必须使 Assert\Choices 注释与可为空值兼容:

/**
 * @ORM\Column(type="string", length=1, nullable=true)
 * @Assert\Choice(choices = {"male", "female", null})
 */
 protected $gender;
Run Code Online (Sandbox Code Playgroud)

  • 也许 Assert\Choices 注释与可为空的值不兼容。或者试试这个注解@Assert\Choice(choices = {"male", "female", null}) (2认同)