2013-06-26 55 views
0

讓我們假設我的表單的幾個字段值,建立在Symfony 2和呈現與小枝是無效的,我收到驗證錯誤。我不僅希望看到這個錯誤,還要爲每個無效字段分配特殊類。如何將類分配給用Twig呈現的無效Symfony 2表單域?

例如:

<input type="text" class="error"> 

我怎麼能這樣做?據我所知,需要重新聲明我的表單模板。是否有任何工作示例如何在具體字段驗證失敗的情況下分配屬性。

所有我現在才發現,是我需要設置這個類表單模板:

{% set attr = attr|merge({'class': attr.class|default('') ~ (errors|length > 0 ? ' error' : '') }) %} 

但我不明白的是如何指定確切的領域呢?任何幫助讚賞。

回答

0

如果使用

{{ form(form) }} 

用於顯示您的形式,我敢肯定你不能完成你想要的,或者至少我不知道該方法可行的。

如果使用這樣的事情

{{ form_row(form.task) }} 
{{ form_row(form.dueDate) }} 

我還是很肯定你不能得到你想要的東西。

我對你所需要的是使這樣的解決方案:

{{ form_start(form) }} 
    {{ form_errors(form) }} 

    <div> 
     {{ form_label(form.task) }} 
     {{ form_errors(form.task) }} 
     {{ form_widget(form.task) }} 
    </div> 

    <div> 
     {{ form_label(form.dueDate) }} 
     {{ form_errors(form.dueDate) }} 
     {{ form_widget(form.dueDate) }} 
    </div> 

<input type="submit" /> 

{{ form_end(form) }} 

,並簡單地從形式對象獲取有關驗證錯誤的信息,然後替換{{form_widget(form.task)}}像這樣的東西

{{ form_widget(form.task, {'attr': {'class': 'error'}}) }} 

如果現場任務未通過驗證。

更慢和更耗時的解決方案將是製作小樹枝文件,每個人都會真實地代表「你的」設計來查看每個表單字段,然後將這些「小樹枝」用一個參數再次來自表單對象,其中包含有關錯誤驗證的數據。

您可以閱讀更多有關形式呈現在您actualy使自己的表單字段設計在這裏

http://symfony.com/doc/current/cookbook/form/form_customization.html

0

這個工作對我來說:

<div class="input{{ form_errors(form.expiry) == '' ? '' : 'error' }}"> 
    {{ form_widget(form.expiry) }} 
</label> 

你也可以做

{{ form_widget(form.expiry, {'attr': {'class': form_errors(form.expiry) == '' ? '' : 'error'}}) }} 
相關問題