如何迭代Twig中的子表单以显示验证错误?

时间:2018-03-16 10:57:15

标签: twig symfony-2.7

我想迭代表单中的所有字段,并通过不匹配显示错误(验证)消息。我使用以下代码,它适用于直接位于表单对象中的所有字段。对于位于子表单/合并表单中的所有字段,此解决方案不起作用。

</table>
<div style=" height:180px; overflow:auto;">
<table class="neo-table">
<tbody>
  {% for children in form.children %}
    {% if children.vars.errors is defined %}
       {% for error in children.vars.errors %}
        <tr>
          <td>
           <strong> {{ error.message }}</strong>
          </td>
        </tr>
       {% endfor %}
     {% endif %}
    {% endfor %}
</tbody>
</table>

图片应该澄清问题:

form structure

我收到所有字段的错误消息,这些字段以前缀fu1开头但来自前缀为ses f.e字段sesOccupationMother2的字段。

当我使用这段代码时,我也没有得到信息:

{{form_errors(form.fu1KfPatientid.bSes)}}

或类似的东西:

{{form_errors(form)}}
当我从字段中写下FQN时,我只是获取信息:

{{form_errors(form.fu1KfPatientid.bSes.sesOccupationMother2)}}

这种行为的原因是什么?有人知道一个技巧,我如何使用我的函数并使用子表单迭代错误?

感谢您的支持!

1 个答案:

答案 0 :(得分:0)

所以现在我写了一个函数,它看起来不太好但是有效。

{% for children in form.children %}
         {% if children.vars.errors is defined %}
            {% for error in children.vars.errors %}
                <tr>
                  <td>
                    <strong> {{ error.message }}</strong>
                  </td>
                </tr>
              {% endfor %}
            {% endif %} 
              {% for children in children.children %}
                {% if children.vars.errors is defined %}
                  {% for error in children.vars.errors %}
                          <tr>
                            <td>
                           <strong> {{ error.message }}</strong>
                            </td>
                          </tr>
                    {% endfor %}
                  {% endif %} 
                     {% for children in children.children %}
                        {% if children.vars.errors is defined %}
                            {% for error in children.vars.errors %}
                             <tr>
                               <td>
                                <strong> {{ error.message }}</strong>
                            </td>
                          </tr>
                       {% endfor %}
                       {% endif %} 
                {% endfor %}
            {% endfor %}
        {% endfor %}