0

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

例如:

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

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

我现在发现,我需要在表单模板中设置这个类:

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

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

4

2 回答 2

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'}}) }}
于 2015-01-07T05:06:14.260 回答
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

于 2013-07-08T06:51:12.710 回答