让我们假设我的表单中的少数字段值构建在 Symfony 2 上并使用 Twig 呈现无效且我收到验证错误。我不仅希望看到这些错误,还要为每个无效字段分配特殊类。
例如:
<input type="text" class="error">
我该怎么做?据我了解,需要重新声明我的表单模板。在具体的字段验证失败的情况下,是否有任何工作示例如何分配属性。
我现在发现的是,我需要在表单模板中设置此类:
{% set attr = attr|merge({'class': attr.class|default('') ~ (errors|length > 0 ? ' error' : '') }) %}
但我不明白的是如何指定确切的字段?任何帮助表示赞赏。
答案 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