【问题标题】:How to merge two symfony forms in one refering to the same class如何将两个 symfony 表单合并为一个引用同一个类
【发布时间】:2018-01-01 11:34:56
【问题描述】:

在我的项目中,我有两种形式,一种是UserForm1.php,另一种是UserForm2.php。我想使用这两种复杂的形式,而不用像FullUserForm.php 这样的形式重新制作它们。

有人有诀窍吗?

我想用所有字段制作FullUserFrom.php,然后在UserForm1.phpUserForm2.php 类中使用选项,但我想用另一种方式来做。

提前感谢您的帮助!

【问题讨论】:

  • 也许这会有所帮助...stackoverflow.com/questions/18355931/…
  • 我的两个表单都具有相同的data_class,我希望将它们合并到一个具有相同 data_class 的 FormType 中,所以它对我没有帮助
  • 您的两个表单都应该有自己的表单类型类,请参阅symfony.com/doc/current/best_practices/forms.html。正如@BranimirĐurek 所说,您可以将这些类型类合并到一个新的类中(尽管答案是针对旧的 symfony,请参阅stackoverflow.com/questions/35254110/… 以获取最新的 symfony 版本)。另一种方法是为两者使用一个表单类型并使用验证组。
  • 您的链接显示了两种表单类型一起使用的经典案例。我的 2 种表单类型引用了同一个实体,因此您的示例中显示的合并主题不是我想要的。

标签: symfony symfony-forms symfony-3.2


【解决方案1】:

我知道您不想创建一个类,但如果两个表单都针对同一个 data_class,我不确定您是否采用了最佳方法。

我认为您可以有一个表单并根据数据添加所需的字段和约束。这可以通过将选项传递给表单来轻松完成,或者使用更优雅的解决方案,使用此处描述的 EventSubscriber:

https://symfony.com/doc/current/form/dynamic_form_modification.html

【讨论】:

  • 这是正确的做法,单个类有两种形式没有意义,这就是为什么有组验证和事件订阅者
猜你喜欢
  • 2014-06-13
  • 1970-01-01
  • 2012-08-16
  • 1970-01-01
  • 2015-03-01
  • 2021-07-30
  • 1970-01-01
  • 2014-04-01
  • 2011-11-24
相关资源
最近更新 更多