2015-08-24 2 views
0

У меня проблема с отображением ошибок в моих шаблонах ветви. Вот мой прутик с одной вложенной формой 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 класса так стиль применяется.

Любые идеи?

ответ

1

Вам обязательно нужно проверить, не является ли одна дочерняя форма, когда вы проверяете, действительна ли родительская форма. Один из способов сделать это будет (непроверенная, это может понадобиться адаптация):

{% 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 %} 
+0

Хорошо, я приспособил его для моего случая. У меня есть родительский шаблон ветви 'base.html.twig'. Я устанавливаю переменную 'children' в дочернем шаблоне. если переменная определена (ссылка на 'form.pictures'), я делаю проверку ... –

0

Я обычно отображаются сообщения об ошибках формы так же, как описано в docs:

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

Thx, но это не то, что я пытаюсь сделать. –

Смежные вопросы