我正在使用
通过注释设置表单/**
* @ORM\Column(type="boolean", nullable=false, name="is_public")
* @Annotation\Required(false)
* @Annotation\AllowEmpty()
* @Annotation\Attributes({"placeholder":"Is Public"})
* @Annotation\Filter({"name":"boolean"})
* @Annotation\Options({"label":"Is Public"})
*/
private $isPublic;
此表单是使用doctrine annotation builder和doctrine entity hydrator构建的。然后,该实体将绑定到此表单。传递布尔字段时会出现问题,因为任何值都被视为false,除了1,传递0会导致错误消息“不能为空”。
有人可以建议我如何使用这种方法正确使用布尔字段?理想情况下,我希望能够在字段验证之前使用过滤器吗?不仅如此,验证还忽略了AllowEmpty()和Required(false)字段。
亲切的问候,
ISE
答案 0 :(得分:0)
你说的话似乎是正确的。表单上的复选框在未选中时不提交任何内容,但是水合器显然需要能够知道用户何时打算清除该值(标记为false)。
相当确定保湿器应该使用空字符串也是假的。对于布尔值,Required和AllowEmpty实际上没有意义,特别是在你的情况下,因为你也把nullable = false
答案 1 :(得分:0)
这样我解决了它$ form-> getInputFilter() - > get(' isPublic') - > setContinueIfEmpty(true);就在$ form-> isValid()
之前