我想仅在值不为空时对对象属性应用验证器。
现在标准的 symfony 行为:
class Entity
{
/**
* @ORM\Column(type="string", nullable=true)
* @Assert\Email()
*/
protected $email;
(...)
}
如果电子邮件为 null 或空字符串,该对象将不会通过验证,有没有办法告诉验证器断言为有效的空值,并且仅在字段有数据时验证?
PS 我知道我可以编写回调验证器,但是为每个字段编写回调只是为了拥有“allowEmpty”功能并不是那么好。
最佳答案
您必须在 FormBuilder
类中为所有可选字段显式设置 'required' => false
。这里有一段描述field type options .
编辑。获得不少反对票。默认情况下,all 验证器将 null
值视为有效值,except NotNull
和 NotEmpty
。两个都没有在问题中使用。问题隐含地是关于如何关闭默认打开的客户端 required
属性。
关于php - 如何在 symfony2 验证器中允许空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7519214/