Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 具有动态表单名称的表单\小部件_Php_Symfony_Twig - Fatal编程技术网

Php 具有动态表单名称的表单\小部件

Php 具有动态表单名称的表单\小部件,php,symfony,twig,Php,Symfony,Twig,在我的Twig模板中,我有一个FOR循环,可以创建多个表单,如下所示: {% 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 %} 我希望这能产生以下

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

{% 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\u id
form\u name
),以避免任何人提出这些可能的解决方案


总结;我需要将动态创建的值(
myform\u 1,myform\u 2
)插入
{{form\u widget()}
myform\u 1
myform\u 2
只是在控制器中定义的FormView对象的变量。
我不知道Twig是否允许调用动态变量,尽管您可以在传递到视图之前在控制器的数组中收集这些表单对象。在这一步之后,你可以迭代这个数组,它将处理你面临的问题。

不要在你的小树枝上创建一个循环:布局应该只呈现一个单一的表单。然后,您可以在控制器中构建表单并渲染其中的每一个表单


有关如何获得渲染模板的结果,请参见Symfony手册中的。您可以连接单个渲染结果并返回一个包含完整内容的响应。

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

{{ attribute(object, method) }}
{{ attribute(object, method, arguments) }}
{{ attribute(array, item) }}
使用此函数,您可以轻松地将字段的动态字符串名称生成到表单中,如下所示

{{ form_widget(attribute(form, 'myfielddynamicname' ~ var ~ ' lastchar')) }}
使用此变量“var”(数组或其他类型),可以呈现许多动态表单名称,如:

  • myfielddynamicnamefoolastchar
  • myfielddynamicnamelastchar
  • myfielddynamicnameneolastchar
要了解更多信息,您可以阅读此官方小枝文档功能


此处:

请添加控制器代码。