php Symfony -创建一个“表”表单

4urapxun  于 2022-10-30  发布在  PHP
关注(0)|答案(2)|浏览(183)

我在symfony 5下,在一个已经在生产中的应用程序上,我想添加一个屏幕,允许在同一个“POST”消息中同时修改同一个表的几行,使用同一个“发送”按钮。
不同的字段必须包含在一个表单标记中:

<form name="modif_todo_liste" method="post">
...
</form>

我尝试了不同的方法,包括基于同一模板表单创建具有不同视图的表:

foreach($todos as $v){
    $form_tab[]=$this->createForm(ModifTodoListeType::class,$v)->createView();
}

我呈现在树枝:

{% for form in form_tab %}
    {{ form_start(form) }}
        <tr>
            <td>{{ form_row(form.Denomination) }}</td>
            <td>{{ form_row(form.Nbr) }}</td>
            <td>{{ form_row(form.CIS) }}</td>
            <td>{{ form_row(form.Label) }}</td>
            <td>{{ form_row(form.BN_Label) }}</td>
            <td>{{ form_row(form.ATC7) }}</td>
            <td>{{ form_row(form.Categorie) }}</td>
        </tr>
    {{ form_end(form) }}
{% endfor %}

从视觉上看,这符合我的要求,但不可能一次验证所有内容,因为所有行都不包含在同一个表单中:

有没有人知道一种简单的方法,使这种形式,将是“可冲洗”的控制器后?
否则我会做一个更经典的解决方案,我把一个包含整个表的数组传递给twig,在视图中我通过循环数组来构建一个表单,在控制器中我会负责更新。
谢谢你的帮助

c0vxltue

c0vxltue1#

您可以使用Symfony表单创建包含不同字段的整个表单。您甚至可以将属性直接Map到实体,因此更新是在表单上调用的handleRequest方法上进行的。(实体更新后,您仍然需要将其保存到数据库中)
Symfony表单文档
如果字段依赖于控制器中的某个数组,您也可以像下面这样在控制器中构建表单。

zour9fqk

zour9fqk2#

请尝试以下操作:

{{ form_start(form) }}
    {% for form in form_tab %}

    <tr>
        <td>{{ form_row(form.Denomination) }}</td>
        <td>{{ form_row(form.Nbr) }}</td>
        <td>{{ form_row(form.CIS) }}</td>
        <td>{{ form_row(form.Label) }}</td>
        <td>{{ form_row(form.BN_Label) }}</td>
        <td>{{ form_row(form.ATC7) }}</td>
        <td>{{ form_row(form.Categorie) }}</td>
    </tr>
    {% endfor %}
{{ form_end(form) }}

相关问题