2014-12-01 72 views
1

我的項目使用Symfony和Twig作爲模板引擎。我有一個嵌入式表單,我在其中進行一些驗證。我想說明的驗證這樣的:檢查樹枝模板中的驗證錯誤

{% if not form.field.vars.valid %} 
    <span style='color: red;'>{{ form_label(form.field) }}</span> 
{% else %} 
    {{ form_label(form.field) }} 
{% endif %} 

的情況是form.field.vars.valid是即使有錯誤總是有效的。 我知道表單驗證工作,因爲我debbuged和看到那裏的錯誤報告的形式。此外,提交表單後,Symfony在焦點處正確呈現該字段周圍的紅色邊框。但我想爲用戶提供更清晰的視覺參考。 我也試過這個form.field.vars.errors | length> 0,但它總是返回零長度,即使有錯誤。

我看到了一些對error_bubblig的引用,我試圖啓用/禁用窗體類中的表單和特定字段,並且它對form.field.vars.valid或form.field沒有任何影響.vars.errors |長度。

我的項目使用Symfony 2.3.6,爲了解決這個問題我升級到2.3.22,然後做2.6,問題依然存在。

任何幫助apreciated。謝謝

也可以有人可以指向我error_bubbling文檔/例子?尋找這個問題我已經看到了一些引用它,但無法找到一個好的解釋。

+0

編輯答案以便更清楚。希望這次更好。 – 2014-12-02 14:54:41

回答

1

我爲我以前的項目實現了類似的功能。我用formBooking.vars.valid,它返回1empty string。這裏是某種形式的片段來告訴你我是如何用error|length

<div class="form-group col-lg-4"> 
     <div class="row"> 
      <div class="col-sm-12 {{ form.field.vars.errors|length > 0 ? 'has-error' }}"> 
       <i class="fa fa-calendar"></i>&nbsp;{{ form_label(form.field, 'Some Label') }} 
       {{ form_widget(form.field, {'attr': {'class': 'datepicker form-control', 'placeholder':'Some label'}}) }} 
      </div> 
      {{ form_errors(form.field, {'attr': {'class': 'error'}}) }} 
     </div> 
    </div> 

基本上,我的包裹小部件一個div並添加has-error類,如果字段有錯誤,然後用CSS我的風格吧我想要的方式。 form_error可以放在任何你想要的地方,我決定把它放在form_widget以下。希望這可以幫助。

+0

是的......這與我想要的相似。但是我的情況是,即使form有錯誤,form.field.vars.errors | length也等於0。所以它打破了這一點。任何想法爲什麼? – 2014-12-01 22:17:40

+1

它是嵌入式表單嗎?因爲我有同樣的問題,但嵌入式的形式。 – 2014-12-01 22:22:20

+0

是的,這是...所以有一個錯誤?任何解決方法? – 2014-12-02 01:48:18