嵌套表单和小枝显示错误


Error in nested form and twig display

我有一个错误显示在我的小树枝模板的问题。这是我的小枝与一个嵌套的形式form.pictures:

{{ form_start(form) }}
{% if not form.vars.valid %}
    <div class="flash-errors-wrapper">
        {{ form_errors(form) }}
        <div class="form-errors">{{ form_errors(form.pictures) }}</div>
    </div>
{% endif %}
{% for formChild in form.pictures %}
<div class="child">
    {% if not formChild.vars.valid %}
        <div class="flash-errors-wrapper">
            {{ form_errors(form) }}
            <div class="form-errors">{{ form_errors(form.picture) }}</div>
            <div class="form-errors">{{ form_errors(form.caption) }}</div>
        </div>
    {% endif %}
    {{ form_widget(formChild.picture) }}
    {{ form_widget(formChild.caption) }}
</div>
{% endfor %}
{{ form_end(form) }}

提交后,当子表单无效时,父表单也无效。问题是它在顶部显示空div,如:

    <div class="flash-errors-wrapper">
        <div class="form-errors"></div>
    </div>

我不希望这样,因为css存在于flash-errors-wrapper类,所以样式应用。

任何想法?

在检查父窗体是否有效时,当然需要检查一个子窗体是否有效。一种方法是(未经测试,可能需要一些调整):

{% if not form.vars.valid %}
    {% set all_childs_valid = True %}
    {% for formChild in form.pictures %}
       {% if not formChild.vars.valid %}
          {% set all_childs_valid = False %}
       {% endif %}
    {% endfor %}
    {% if all_childs_valid %}
    <div class="flash-errors-wrapper">
        {{ form_errors(form) }}
        <div class="form-errors">{{ form_errors(form.pictures) }}</div>
    </div>
    {% endif %}
{% endif %}

我通常显示表单错误,正如文档中所描述的:

 {% if errors|length > 0 %}
    <ul>
        {% for error in errors %}
            <li>{{ error.message }}</li>
        {% endfor %}
    </ul>
 {% endif %}