首页 > 解决方案 > 在 Symfony 4 中使用 form_div_layout 时未显示复选框标签

问题描述

我正在将 Symfony 2.8 应用程序转换为 Symfony 4.4。我已经更新了库、组件、控制器、表单等,所以现在我没有弃用,但我发现了一个奇怪的问题:我们在这个应用程序中使用的几乎所有表单都是使用bootstrap_3_horizontal_layout主题呈现的,没有问题。但是在我们使用的几种形式中,为了更好地控制呈现的界面,form_div_layout主题。问题是当我们使用这个主题时,标签,复选框旁边的文本,没有显示出来。如果我们只是禁用{% form_theme form 'form_div_layout.html.twig' %}订单,标签会正确显示。

这是我们用来呈现复选框的代码:

<div class='row'>
    <div class='col-md-3'>
        {{ form_label(form.user.roles) }}
    </div>
    <div class='col-md-9'>
        {{ form_errors(form.user.roles) }}
        {% for child in form.user.roles %}
            {{- form_widget(child) -}}
            {{- form_label(child) -}}
            <br />
        {% endfor %}
    </div>
</div>

这是生成的代码的一小段:

<input type="checkbox" id="form_user_roles_0" name="form[user][roles][]" value="ROLE_INTRANET" checked="checked" /><br />
<input type="checkbox" id="form_user_roles_1" name="form[user][roles][]" value="ROLE_EXTRANET" checked="checked" /><br />
<input type="checkbox" id="form_user_roles_2" name="form[user][roles][]" value="ROLE_INTRANET_ADMIN" /><br />

这是相同的片段,但禁用了该form_theme选项(因此,使用bootstrap_3_horizontal_layout

<div class="checkbox"><label for="form_user_roles_0"><input type="checkbox" id="form_user_roles_0" name="form[user][roles][]" value="ROLE_INTRANET" checked="checked" /> Access to the intranet</label></div><br />
<div class="checkbox"><label for="form_user_roles_1"><input type="checkbox" id="form_user_roles_1" name="form[user][roles][]" value="ROLE_EXTRANET" checked="checked" /> Access to the extranet</label></div><br />
<div class="checkbox"><label for="form_user_roles_2"><input type="checkbox" id="form_user_roles_2" name="form[user][roles][]" value="ROLE_INTRANET_ADMIN" /> Intranet Administrator</label></div><br />

我们做错了什么?我们如何使用 打印/显示/显示标签form_div_layout

标签: phpsymfonytwig

解决方案


推荐阅读