简单检查表单域是否存在小枝模板中的错误

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

{% if form.points.get('errors') is not empty %} 

有没有像这样的方法:

 {% if form.points.hasErrors() %} 

做到这一点更简单? 这不是一个很大的差别,但如果我不能做到这一点,为什么不呢。

该方法不存在。 我通常做{% if form.points.vars.errors|length %}

我发现的更好的方法是使用这种代码

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

重写字段呈现时,您还可以检查错误:

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

对于更深的forms定制我做:

 <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> 

Sf2.5

由于空数组parsing为false,因此可以将现有的检查缩短为

 {% if form.WIDGET_NAME.get('errors') %} 

这是我使用的:

  <div class="form-group {{ form.brand.vars.errors|length > '' ? 'has-error' }}"> 

我已经创build了一个树枝扩展来处理这个:我的扩展

 public function hasError($string) { if(strlen($string) > 4) return true; return false; } 

我在树枝上使用它

 {{ has_error(form_errors(form.username)) ? form_errors(form.username) : '' }} 

我有一个类似的问题,但form.points不存在于我的树枝模板。

我必须得到控制器中的错误数量,然后将其作为variables传递到我的模板中。 $form->getErrors()行为不像你在控制器中所期望的那样。 看到这个SO问题的function,将正确地得到表单错误。