ZF2 + DoctrineORMModule +布尔字段

时间:2014-03-25 17:00:03

标签: doctrine-orm zend-framework2

我正在使用

通过注释设置表单
/**
 * @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

2 个答案:

答案 0 :(得分:0)

你说的话似乎是正确的。表单上的复选框在未选中时不提交任何内容,但是水合器显然需要能够知道用户何时打算清除该值(标记为false)。

相当确定保湿器应该使用空字符串也是假的。对于布尔值,Required和AllowEmpty实际上没有意义,特别是在你的情况下,因为你也把nullable = false

答案 1 :(得分:0)

这样我解决了它$ form-> getInputFilter() - > get(' isPublic') - > setContinueIfEmpty(true);就在$ form-> isValid()

之前