使用Symfony2.3.4和Twig 我敢打赌这对任何人来说都很容易,但是我无法完成它 我试图只显示一个始终在同一消息的错误警报,始终在表单的beginnig,每次有错误,无论哪个字段包含无效输入。
我以为我可以这样做:
//../Professor/Resources/new.html.twig
{% extends 'AdminBundle:Default:admin.html.twig' %}
{% block content -%}
<h1>New professor</h1>
{% if form_errors(form) is not null %} {#<------------------------------------#}
<div class="alert alert-error">
<i class="glyphicon-ban-circle"></i> Message.
</div>
{% endif %}
<div class="row-fluid">
<form id="prof_create" class="form-horizontal sf_admin_form_area" action="{{ path('professor_create') }}"
method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<div class="row-fluid">
<div class="span8"></div>
</div>
<div class="form-actions">
<button class="btn btn-primary">
<i class="icon-ok"></i> {{'Create' | trans}}</button>
<a class="btn" href="{{ path('professor') }}">
<i class="icon-ban-circle"></i> {{'Cancel' | trans }}</a>
</div>
</form>
</div>
{% endblock %}
{%if form_errors(form)不为null%} 不起作用,意思是:
当我在输入字段中的任何数据之前第一次显示创建表单时,错误警报显示尽管字段中没有数据。
我也尝试了 {%if form_errors(form)%} 这也没用,但反过来说,如果有错误也没关系,警报就不会秀。
我不知道有很多关于form_errors(表单)的内容 欣赏任何提示甚至是完全不同的解决方案 感谢
答案 0 :(得分:4)
你试试这个吗?
{% if form_errors(form.content) is not empty %}
答案 1 :(得分:1)
尝试:
{% if form_errors(form) != '' %}
...
{% endif %}
您还需要确保所有字段的error_bubbling选项都设置为true。如果你不错误只存在于孩子身上。因此,即使有些孩子这样做,主要形式也不会有任何错误。
要设置错误冒泡,您需要对每个字段执行此操作:
//Some FormType that you have created
class CustomFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('test', 'text', array('error_bubbling'=>true);
}
}
您的另一个选择是覆盖form_errors块,如接受的答案here中建议的那样:
{% block form_errors %}
{% spaceless %}
{% set a = false %}
{% for child in form.children %}
{% if child.get("errors") %}
{% set a = 'true' %}
{% endif %}
{% endfor %}
{% if a == true %}
<div class="alert">
{% for children in form.children %}
{{ form_errors(children) }}
{% endfor %}
</div>
{% endif %}
{% if errors|length > 0 %}
<ul>
{% for error in errors %}
{{
error.messagePluralization is null
? error.messageTemplate|trans(error.messageParameters, 'validators')
: error.messageTemplate|transchoice(error.messagePluralization, error.messageParameters, 'validators')
}}
{% endfor %}
</ul>
{% endif %}
{% endspaceless %}
{% endblock form_errors %}
答案 2 :(得分:1)
试
{% if form.vars.errors|length %}
答案 3 :(得分:0)
{% if not form.vars.valid %}
<div class="alert alert-error">
{{ form_errors(form) }}
</div>
{% endif %}