Php 具有动态表单名称的表单\小部件
在我的Twig模板中,我有一个FOR循环,可以创建多个表单,如下所示: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 %} 我希望这能产生以下
{% 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
- myfielddynamicname栏lastchar
- myfielddynamicnameneolastchar
此处:请添加控制器代码。