简单检查表单字段是否在Twig模板中有错误

Daw*_*hia 60 symfony-forms symfony twig

在Twig模板中,我检查一个字段是否有这样的错误:

{% if form.points.get('errors') is not empty %}
Run Code Online (Sandbox Code Playgroud)

有没有像这样的方法:

{% if form.points.hasErrors() %}
Run Code Online (Sandbox Code Playgroud)

做得更简单?这不是一个很大的区别,但如果我不能做到更容易,为什么不呢.

bir*_*rko 104

我找到的更好的方法是使用这种代码

{% if not form.vars.valid %}
<div class="alert alert-error">
    {{ form_errors(form) }}
</div>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

  • @ex3v这取决于你如何设置错误冒泡 (2认同)
  • @ ex3v如此处所述http://symfony.com/doc/current/reference/forms/types/form.html#error-bubbling默认行为将其设置为有效字段显示的所有错误.使用form_row(form.field)或form_errors(form.field)将显示它们.如果为该字段设置error_bubbling为true.错误将以其父表单显示. (2认同)

Kri*_*ith 86

那种方法不存在.我通常这样做{% if form.points.vars.errors|length %}.

  • 这对我使用Symfony 2.3不起作用.使用`form.vars.valid`的birko解决方案工作正常. (13认同)

jku*_*vic 18

您还可以在覆盖字段渲染时检查错误:

{% block field_row %}
{% spaceless %}    
    <div class="control-group {% if errors %}error{% endif %}">
      {{ form_label(form) }}
      <div class="controls">
        {{ form_widget(form) }}        
        {{ form_errors(form) }}        
      </div>
    </div>    
{% endspaceless %}
{% endblock field_row %}
Run Code Online (Sandbox Code Playgroud)


d3u*_*ter 13

为了更深入的表单定制,我做:

<div class="form-group {% if form.MYFORMINPUT.vars.valid==false %}has-error{% endif %}">
//some twisted divs
{{form_label(form.MYFORMINPUT)}}
{{form_widget(form.MYFORMINPUT)}}
</div>
Run Code Online (Sandbox Code Playgroud)

Sf2.5