0

当我使用这样的代码时:

form_widget(form)

它将容器放在每一行但也放在整个表单上,我使用两个主题文件:

{% block form_row %}
{% spaceless %}
<section>
        {{ form_label(form) }}
        {{ form_errors(form) }}
        <div>
        {{ form_widget(form) }}
        </div>
</section>
{% endspaceless %}
{% endblock form_row %}

这个在每一行上都可以正常工作,但是这个:

{% block form_widget %}
{% spaceless %}
    {# <div {{ block('widget_container_attributes') }}> #}
        {{ block('field_rows') }}
        {{ form_rest(form) }}
    {# </div> #}
{% endspaceless %}
{% endblock form_widget %}

不仅从表单中删除容器,还从每一行中删除容器。如何仅从表单中删除容器?

// 编辑

我得到:

<form method="post" action="/acme/web/app_dev.php/admin/users_management/3">
    <label>Edit user</label>
    <fieldset>
        <input type="hidden" value="PUT" name="_method" />
        <div id="acme_usersbundle_usertype">
            <section>
                <label class="required" for="acme_usersbundle_usertype_username">
                    Login
                    <span class="required"> </span>
                </label>
                <div>
                    <input id="acme_usersbundle_usertype_username" type="text" value="login" maxlength="255" required="required" name="acme_usersbundle_usertype[username]">
                </div>
            </section>
        </div>
    </fieldset>
</form>

我想得到(没有<div id="acme_usersbundle_usertype">):

<form method="post" action="/acme/web/app_dev.php/admin/users_management/3">
    <label>Edit user</label>
    <fieldset>
        <input type="hidden" value="PUT" name="_method">

        <section>
            <label class="required" for="acme_usersbundle_usertype_username">
                Login
                <span class="required"> </span>
            </label>
            <div>
                <input id="acme_usersbundle_usertype_username" type="text" value="login" maxlength="255" required="required" name="acme_usersbundle_usertype[username]">
            </div>
        </section>
    </fieldset>
</form>

使用后:

form_widget(form)
4

1 回答 1

2

要将行放入 中<section>,您的方法是正确的。

{% block form_row %}
{% spaceless %}
    <section>
        {{ form_label(form) }}
        {{ form_errors(form) }}
        <div>
            {{ form_widget(form) }}
        </div>
    </section>
{% endspaceless %}
{% endblock form_row %}

对于使用<fieldset>而不是<div> 只需修改form_widget_compound块而不是更多。甚至不是form_widget

{% block form_widget_compound %}
{% spaceless %}
    <fieldset {{ block('widget_container_attributes') }}>
        {% if form.parent is empty %}
            {{ form_errors(form) }}
        {% endif %}
        {{ block('form_rows') }}
        {{ form_rest(form) }}
    </fieldset>
{% endspaceless %}
{% endblock form_widget_compound %}

这应该可以解决问题;)

在 Twig 中,所需的每个块都在位于 Twig Bridge 内的单个模板文件 ( form_div_layout.html.twig ) 中定义。在此文件中,您可以看到呈现表单所需的每个块和每个默认字段类型。

于 2013-06-27T16:09:21.763 回答