如果通过循环添加表单字段,则自定义symfony表单

问题描述 投票:0回答:1

我正在创建这样的表单:

foreach ($users as $user) {
    $builder->add('user_' . $user->getId(), NumberType::class, [
       'label' => $user->__toString(),
       'required' => false,
       'mapped' => false,
       'constraints' => [...],
    ]);
}

在树枝上,我想在表格中显示表格:

<tbody>
    {% for user in users %}
    {% set userId = 'user_' ~ user.getID() %}
        <tr>
            <td>{{ form_label(form.userId) }}</td>
            <td>
                {{ form_widget(form.userId) }}
            </td>
        </tr>
    {% endfor %}
 </tbody>

但出现错误:

属性“ userId”或方法“ userId()”,“ getuserId()” /“ isuserId()”或“ __call()”都不存在,并且在类“ Symfony \ Component \ Form \”中没有公共访问权限FormView”。

我该如何解决这个问题?

symfony twig symfony-forms
1个回答
0
投票

我使用attribute函数解决了我的问题:

<tbody>
    {% for user in users %}
    {% set userId = 'user_' ~ user.getID() %}
        <tr>
            <td>{{ form_label(attribute(form, (userId) )) }}</td>
            <td>
                {{ form_widget(attribute(form, (userId) )) }}
            </td>
        </tr>
    {% endfor %}
</tbody>

0
投票

只需将树枝中的表格循环即可。

我认为这可能对您有所帮助(但未经测试)

<tbody>
{% for user in form %}
    <tr>
        <td>{{ form_label(user) }}</td>
        <td>{{ form_widget(user) }}</td>
    </tr>
{% endfor %}

© www.soinside.com 2019 - 2024. All rights reserved.