简单检查表单域是否存在小枝模板中的错误
在枝条模板中,我检查一个字段是否有这样的错误:
{% 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,将正确地得到表单错误。