如何将类分配给无效的Symfony 2表单字段,使用Twig呈现?

时间:2013-06-26 12:21:39

标签: symfony twig

让我们假设我的表单中的少数字段值构建在 Symfony 2 上并使用 Twig 呈现无效且我收到验证错误。我不仅希望看到这些错误,还要为每个无效字段分配特殊类。

例如:

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

我该怎么做?据我了解,需要重新声明我的表单模板。在具体的字段验证失败的情况下,是否有任何工作示例如何分配属性。

我现在发现的是,我需要在表单模板中设置此类:

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

但我不明白的是如何指定确切的字段?任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:1)

这对我有用:

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

您也可以

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

答案 1 :(得分: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'}}) }}

如果字段任务未通过验证。

更慢且耗时的解决方案是制作小的文件,每个文件都会实际上代表“你的”设计,以便查看每个表单字段,然后再用一个参数调用那些“小树枝”来自表单对象,其中包含有关错误验证的数据。

您可以在此处阅读更多有关表单渲染的内容,您可以在此处制作自己的表单字段设计

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