Symfony 使用树枝循环生成多种形式

Symfony generate several forms with a twig loop

谁能告诉我为什么这段代码不起作用,我在互联网上找不到这样的例子。

{% for dp in dpList %}
            <tr>
              <td> //values </td>
              <td>....</td>
               ...
              <td>
                {{ form_start(display) }}
                {{ form_row(display.info, { value: dp.info }) }}
                {{ form_rest(display) }}
                {{ form_end(display) }}
              </td>
            </tr>
          {% endfor %}

我想要做的是为每一行显示一个按钮 "Display",其中包含该行的隐藏值。它实际上只将按钮显示到第一行。

谢谢!

这是不正确的。表单对象是表单的单个实例,您不能在同一页面上多次呈现它。

您应该有多个表单对象,或者使用其他东西代替表单,例如 link 或带有 javascript 的按钮。

我建议使用 jQuery 和 post() 函数。

我找到了适合我需要的解决方案:

我在私有函数中创建了一个表单:

private function formShow()
    {
        $show = $this->createFormBuilder()
            ->setAction($this->generateUrl('admin_platform_show'))
            ->setMethod('POST')
            ->add('persno', 'hidden')
            ->add('Show', 'submit')
            ->getForm();

        return $show;
    }

然后在我的控制器中我创建了一个 arrayList,在我将拥有的每一行上都有一个循环,所以它会生成我需要的表单:

foreach ($idmList as $idm) 
{
    $show = $this->formShow()->createView();
    $arrayForms[] = $show;
}

然后我将我的 arrayList 发送到我的视图并访问每个表单,如下所示:

{{ form_start(arrayForms[loop.index0]) }}
{{ form_row(arrayForms[loop.index0].persno, { value: idm.persno }) }}
{{ form_rest(arrayForms[loop.index0]) }}
{{ form_end(arrayForms[loop.index0]) }}

通过这种方式,我使用了 symfony 制作的安全表单,其中包含行的特定值,如果我按下提交按钮,我将在另一个控制器中重复使用该值。

希望对某人有所帮助。