Symfony4 - 根据其他字段的值验证字段

Posted

技术标签:

【中文标题】Symfony4 - 根据其他字段的值验证字段【英文标题】:Symfony4 - Validate fields based on values of other fields 【发布时间】:2019-07-11 13:18:17 【问题描述】:

我正在构建一个非常大的表单,其中包含多步和一些条件字段,但找不到解决问题的好方法。

例如,如果字段 A 是“Foo”,那么字段 B 将通过 javascript 显示并且必须通过 Symfony 进行验证,否则该字段必须为空。有没有办法做到这一点?

PS: https://github.com/craue/CraueFormFlowBundle 是处理复杂多步表单的好方法吗?我应该使用组和实体还是在没有类的情况下构建它?最佳做法是什么?

谢谢!

【问题讨论】:

【参考方案1】:

我的解决方案:

我认为你应该使用Symfony Form Events。在事件中,您可以执行自定义操作,例如添加错误、检查所有形式的值、动态删除和添加验证器/字段。

有关表单事件流程的更多信息,您可以阅读here

这里Add error to Symfony 2 form element你有问题如何从事件监听器向字段添加错误(在 symfony 4 中类似地完成)

我对 craue/CraueFormFlowBundle 的看法:

我在我的项目中使用CraueFormFlowBundle 来创建复杂的多步骤表单。它很有用,可以节省大量时间。我创建了很多基于CraueFormFlowBundle + Doctrine entities 结合validation groups + symfony form events 的表单 - 我可以推荐的强大而灵活的解决方案

【讨论】:

嗨,听起来不错。我不需要 Doctrine 实体,因为我的数据被发送到 api 端点,但非 db 实体应该工作相同或不同? 教义与此无关。您可以创建简单的模型(简单的 php 类),它应该可以工作 好的。谢谢!最后一个问题。是否可以根据配置文件生成表单?例如,我有一个包含多个数组和字段的 json 文件,我可以动态创建一个表单吗?我的实体可能会有所不同,并且字段的顺序有时可能会发生变化。 这可能有问题,因为您基于模型创建了一个表单。我会创建几个模型并为类似的实体应用继承 我已经担心了。我需要在未来创建一个带有前端的表单构建器,我可以在其中拖放字段或组。也许这可以工作:symfony.com/doc/current/form/without_class.html

以上是关于Symfony4 - 根据其他字段的值验证字段的主要内容,如果未能解决你的问题,请参考以下文章

根据另一个字段的值验证 Django 模型字段?

基于 Symfony2 中其他字段值的字段条件验证

sql 根据一个字段的值判断显示其他字段的值

jQuery X-Editable:根据其他选择字段的值更新选择字段

如何根据其他记录的值更新字段

在 Django 中,根据模型中其他字段中选择的值删除选择字段下拉列表中的选项