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

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

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

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

谢谢!

【问题讨论】:

    标签: forms symfony validation symfony4 multi-step


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-26
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多