2013-06-26 22 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'}}) }} 
相关问题