can*_*nni 26 php validation symfony
我想仅在值不为空时才对对象属性应用验证器,即.
现在标准的symfony行为:
class Entity
{
/**
* @ORM\Column(type="string", nullable=true)
* @Assert\Email()
*/
protected $email;
(...)
}
Run Code Online (Sandbox Code Playgroud)
如果电子邮件为null或空字符串,那么该对象不会通过验证,是否有办法告诉验证者断言为有效的空值,并仅在字段有数据时验证?
PS我知道我可以编写回调验证器,但为每个字段写回调只是为了拥有"allowEmpty"功能并不是那么好.
gil*_*den 25
您必须'required' => false在FormBuilder类中明确设置所有可选字段.这是一段描述字段类型选项的段落.
编辑.获得了不少投票.默认情况下,除了和之外,所有验证器都将null值视为有效.这两个问题都没有用在问题中.问题隐含在如何关闭默认打开的客户端属性. NotNullNotEmptyrequired
小智 20
设置required选项不是解决方案:
另请注意,将required选项设置为true将不会导致应用服务器端验证.换句话说,如果用户为该字段提交空白值(例如,使用旧浏览器或Web服务),则除非您使用Symfony的NotBlank或NotNull验证约束,否则它将被接受为有效值.
http://symfony.com/doc/current/book/forms.html#field-type-options
对于我的自定义验证器,我添加了一个
if (null == $value) {
return true;
}
Run Code Online (Sandbox Code Playgroud)
该isValid()方法.但是,我不确定标准验证器类的最佳方法是什么.
| 归档时间: |
|
| 查看次数: |
32091 次 |
| 最近记录: |