Symfony sfValidators:动态设置是否需要值


Symfony sfValidators: Dynamically setting a value to be required or not?

我有以下问题:

我有一个表单,用户可以选择切换开关(Yes/No)。

如果他们选择Yes,我会在模板上隐藏几个字段(因为它们现在将自动计算)。

问题是现在,一组不同的字段必须不为空才能成功提交。

单击开关后,第一个字段不必是可选的(因为它们只是隐藏的,但仍然提交),但第二组字段必须非空。

有没有一种简单的方法可以使用Symfony的sfValidator类获得这种动态验证行为,或者我应该简单地使用jQuery破解一个解决方案?

这听起来像是Symfony中已经存在的Callback约束的完美情况。引用链接文档:

回调约束的目的是创建完全自定义的验证规则,并将任何验证错误分配给对象上的特定字段。如果你在表单中使用验证,这意味着你可以让这些自定义错误显示在特定字段旁边,而不是简单地显示在表单的顶部

这解决了后端问题,您仍然需要注意字段的required属性,以便HTML5验证能够正常工作。