【问题标题】:Create multiple symfony 4 forms in the same view在同一个视图中创建多个 symfony 4 表单
【发布时间】:2018-12-14 01:45:07
【问题描述】:

我有一个 symfony 4 应用程序,它在同一页面上有多个表单。 但是,由于它们使用相同的 formType,因此只有一个使用正确的输入进行渲染。

当用户单击一个模式时,会触发一个创建表单和多个更新表单。我通过调用 twig include 然后将项目 id 传递到部分中来呈现页面上的更新表单。然后,部分呈现与创建表单相同的表单,但使用来自传递对象的值。

有什么方法可以实现吗?

当前视图的基本表示:

{#create form#}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}

{#update form1#}
{{ form_start(, {'action': path('edit', { "id" : update.id }),  'attr': {'id' : dealer.id}}) }}
{{ form_widget(form) }}
{{ form_end(form) }}

{#update form2#}
{{ form_start(, {'action': path('edit', { "id" : update.id }),  'attr': {'id' : dealer.id}}) }}
{{ form_widget(form) }}
{{ form_end(form) }}

我想对 CRUD 使用相同的控制器方法,并尝试为每个更新实体创建一个 Form\AbstractType 但没有任何运气!

【问题讨论】:

  • 如果可能,请展示一些示例代码来说明您想要实现的目标。
  • 刚刚给出了一个粗略的例子,谢谢
  • 我认为您应该将表单两次初始化为不同的树枝变量。

标签: php symfony symfony4


【解决方案1】:

不是发送所有相同名称的表单,而是更改名称、formRead、formUpdate、FormDelete 等。 最后一个 $form 将 self 覆盖为之前的一个。

{% if formRead is defined %}
{#create form#}
{{ form_start(formRead) }}
{{ form_widget(formRead) }}
{{ form_end(formRead) }}
{% end if %}

{% if formUpdate is defined %}
{#update form1#}
{{ form_start(formUpdate, {'action': path('edit', { "id" : update.id }),  'attr': {'id' : dealer.id}}) }}
{{ form_widget(formUpdate) }}
{{ form_end(formUpdate) }}
{% end if %}

【讨论】:

  • 如果我在页面上有 10 个更新表单(带有相关输入值),这会起作用吗?
  • 为什么你不使用 CollectionType 而不是 10 个更新表单。
猜你喜欢
  • 2023-03-30
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多