Php Symfony 3:仅在出现错误时自定义类输入字段
通常,我们可以从中自定义输入字段的属性类 小枝Php Symfony 3:仅在出现错误时自定义类输入字段,php,forms,symfony,Php,Forms,Symfony,通常,我们可以从中自定义输入字段的属性类 小枝 {{ form_widget(form.username,{'attr':{ 'class':'input', 'placeholder':'Write your username' }}) }} 但是如何根据这个字段有错误的事实来添加类呢 例如,如果在提交过程中遇到错误,我希望我的输入标记有一个额外的类“is danger”我通过在以下内容之前设置变量找到了解决方法: {% if fo
{{ form_widget(form.username,{'attr':{
'class':'input',
'placeholder':'Write your username'
}}) }}
但是如何根据这个字段有错误的事实来添加类呢
例如,如果在提交过程中遇到错误,我希望我的输入标记有一个额外的类“is danger”我通过在以下内容之前设置变量找到了解决方法:
{% if form_errors(form.username) is not empty %}
{% set class = "input is-danger" %}
{% else %}
{% set class = "input" %}
{% endif %}
{{ form_widget(form.username,{'attr':{
'class':class,
'placeholder':'Write your username'
}}) }}
但是,在模板中发布所有这些内容有点麻烦。我通过在以下内容之前设置变量找到了解决方法:
{% if form_errors(form.username) is not empty %}
{% set class = "input is-danger" %}
{% else %}
{% set class = "input" %}
{% endif %}
{{ form_widget(form.username,{'attr':{
'class':class,
'placeholder':'Write your username'
}}) }}
但是,在模板中发布所有这些内容有点麻烦。您可以使用宏改进您的解决方法:
{% macro inputClass(field) %}
{% spaceless %}
class="input{% if form_errors(field) is not empty %} is-danger{% endif %}"
{% endspaceless %}
{% endmacro %}
然后
{{ form_widget(form.username, {'attr': {
'class': inputClass(form.username),
'placeholder': 'Write your username'
}}) }}
如果你想要一个更全球化的解决方案,你应该能够。或者,您可以自定义
form_errors()
调用,而不需要将该类添加到小部件本身,而不是将属性放在主小部件上。您可以使用宏改进您的解决方法:
{% macro inputClass(field) %}
{% spaceless %}
class="input{% if form_errors(field) is not empty %} is-danger{% endif %}"
{% endspaceless %}
{% endmacro %}
然后
{{ form_widget(form.username, {'attr': {
'class': inputClass(form.username),
'placeholder': 'Write your username'
}}) }}
如果你想要一个更全球化的解决方案,你应该能够。或者,您可以自定义
form_errors()
调用,而不是将该属性放在主小部件上,而不需要将该类添加到小部件本身。您尝试过我的宏解决方案吗?它有点干净。你有没有试过我的宏解决方案?它把它弄干净了一点。