删除整个表单的容器

时间:2013-06-27 13:10:23

标签: symfony twig

当我使用这样的代码时:

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)

1 个答案:

答案 0 :(得分: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&gt;只需修改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中,所需的每个块都在一个模板文件(form_div_layout.html.twig)中定义,该文件位于Twig Bridge内。在此文件中,您可以看到呈现表单和每个默认字段类型所需的每个块。