2012-01-18 54 views
54

在枝杈模板我檢查,如果一個字段有這樣的錯誤:簡單的檢查,如果表單字段在枝杈模板錯誤

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

有沒有像任何方法:

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

做簡單?這不是一個很大的區別,但如果我不能做到這一點,爲什麼不呢。

+0

許多答案已被添加,其中一些答案取決於'error_bubbling'設置。我已經在symfony食譜中增加了一個PR來改進文檔。隨意在這裏投票:https://github.com/symfony/symfony-docs/issues/6145 – webDEVILopers 2016-01-14 10:39:26

回答

78

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

+9

這不適用於我使用Symfony 2.3。 birko的'form.vars.valid'解決方案工作正常。 – binarious 2013-08-01 11:34:29

+0

@binarious這個方法在Symfony 2.3中可以正常工作,但是你是對的,現在birko的解決方案更好。 – Maxooo 2013-09-25 12:08:09

+0

當出現錯誤時,此解決方案將產生'0' **如果在表單類型中將IF **'error_bubbling'設置爲'True'。 – BentCoder 2014-06-15 11:47:00

-1

我有類似的問題,但我的樹枝模板中不存在form.points

我必須得到控制器中的錯誤數量,然後將其作爲變量傳遞到我的模板中。 $form->getErrors()雖然不像您在控制器中預期的那樣運行。請參閱this SO question瞭解正確獲取表單錯誤的函數。

+6

您需要用您的字段名稱替換「分數」 – Emilie 2012-07-05 20:34:26

16

您還可以檢查覆蓋場渲染時的錯誤:

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

非常感謝! – Sasa 2012-06-05 22:41:15

+1

正是我期待的,完美的答案。 – apfelbox 2012-06-22 14:19:14

90

更好的方法,我發現,是由於空數組解析爲false使用這種代碼

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

可悲的是,這並不適用於我,而調用'{{form_errors(form.somefield)}}'仍然有效。 – ex3v 2014-05-25 10:02:53

+0

@ ex3v這取決於你如何設置你的錯誤冒泡 – birko 2014-05-28 06:28:27

+1

你可以擴大你的答案? – ex3v 2014-05-28 13:32:41

0

,你可以縮短你現有的支票到

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

我已經創建了一個樹枝擴展處理這個問題: 我的分機

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

我這樣使用它在樹枝

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

對於較深的表單自定義我做的:

<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

0

這是我使用的:

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