带有动态表单名称的form_widget

时间:2015-07-26 22:25:43

标签: php symfony twig

在我的Twig模板中,我有一个FOR LOOP,可以创建多个表单,如下所示:

{% for thing in things %}

{% set form_id = 'myform_' ~ thing.Id %}

{% set form_name = attribute(form, 'myform_' ~ thing.Id) %}


 {{ form_widget(form_id) }}
 {{ form_widget(form_name) }}


{% endfor %}

我希望生成以下内容:

   {{ form_widget(myform_1) }}

   {{ form_widget(myform_2) }}

....等等。

我在那里做了两次失败的尝试,(form_idform_name),以避免任何人建议将这些作为可能的解决方案。

总结;我需要在myform_1, myform_2

中插入动态创建的值({{ form_widget() }}

3 个答案:

答案 0 :(得分:0)

事物myform_1myform_2只是您在控制器中定义的FormView对象的变量。 我不知道Twig是否允许动态变量调用,尽管您可以在传递给视图之前在控制器中的数组中收集这些表单对象。在这一步之后,您可以迭代思考这个数组它将管理您面临的问题。

答案 1 :(得分:0)

不要在Twig中创建循环:布局应该只呈现单个形式。然后,您可以在控制器中构建表单并渲染每个表单。

请参阅Symfony一书中的this documentation,了解如何获取渲染模板的结果。您可以连接单个渲染结果并返回包含完整内容的响应。

答案 2 :(得分:0)

您可以使用特殊功能Twig在Twig中使用动态名称渲染动态字段表单:

{{ attribute(object, method) }}
{{ attribute(object, method, arguments) }}
{{ attribute(array, item) }}

使用此功能,您可以轻松地为您的字段动态生成动态字符串名称,如此

{{ form_widget(attribute(form, 'myfielddynamicname' ~ var ~ ' lastchar')) }}

使用此变量" var " (数组或其他类型)您可以渲染许多动态表单名称,如:

  • myfielddynamicname的 FOO lastchar
  • myfielddynamicname的 lastchar
  • myfielddynamicname的 lastchar

为了更多的理解,你可以阅读这个官方的枝条文档功能

此处:attribute twig function documentation