【问题标题】:Symfony2 force subform validation when every field is empty当每个字段为空时,Symfony2 强制子表单验证
【发布时间】:2013-03-21 09:00:01
【问题描述】:

我有两个实体(我们称它们为 A 和 B)绑定在一对一的关系中,并使用一个表单来填充它们。 B 实体字段的填充取决于实体 A 中的状态,如下所示:

实体 A:状态 0 实体 B:两个字段都为空

实体 A:状态 1 实体 B:字段 1 已填充字段 2 为空

实体 A:状态 2 实体 B:字段 1 为空 字段 2 已填充

这两个字段的填充状态是不允许的。

所以我制作了 3 个自定义回调验证器来检查状态 1、2 和不允许的状态。 不幸的是,当两个字段都为空时,不会触发对状态 1 和 2 的检查,显然是因为字段为空;事实上,在表单中添加一个虚假的隐藏字段会触发验证过程,因为表单已被填充!

显然这是一个 hackish 解决方案,所以我想知道是否有一种方法可以强制子表单验证,即使每个表单字段都是空的。

【问题讨论】:

    标签: forms validation symfony callback


    【解决方案1】:

    Symfony 不验证表单,它验证实体。您最好的办法是在您的实体中创建一个验证函数,并使用此处描述的 symfony 的“Getters”验证进行验证:

    http://symfony.com/doc/2.1/book/validation.html#getters

    我相信对于您的情况,具有验证的实体是与表单类型相关联的实体。

    【讨论】:

    • 感谢您的澄清。但是我已经有一个由 @Assert\Callbacks 注释调用的回调验证方法。所以我更喜欢使用这种方法将错误消息设置到正确的字段或字段。
    猜你喜欢
    • 2018-10-10
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多