如何在一个地方显示所有表单错误

时间:2013-09-17 11:38:21

标签: forms symfony error-handling

我见过有关同一问题的各种帖子,但没有什么可以对我有用。

这是我的表格

<form action="" method="post" {{ form_enctype(form) }} novalidate>
    {{ form_errors(form) }}
    <div class="login_field">
        {{ form_label(form.name) }}
        {{ form_widget(form.name) }}                    
    </div>
    <div class="clear"></div>
    <div class="login_field">
        {{ form_label(form.status) }}
        {{ form_widget(form.status) }}                    
    </div>                
    <div class="login_field">
        <label>&nbsp;</label>
        <input type="submit" value="Create" class="submit_btn" />
    </div>
</form>

根本没有显示错误。我怎样才能摆脱这个问题?

2 个答案:

答案 0 :(得分:10)

您必须为每个字段添加form_errors ...

<div class="login_field">
    {{ form_errors(form.name) }}    
    {{ form_label(form.name) }}
    {{ form_widget(form.name) }}                    
</div>

...或者只是使用form_row将所有这三个一起呈现......

<div class="login_field">
    {{ form_row(form.name) }}                       
</div>

...或者使用FormType类中的表单字段的error_bubbling选项让表单错误冒泡到顶部。这意味着它们将通过{{ form_errors(form) }}呈现。

$builder->add('fieldname', 'text', array(
    'error_bubbling' => true,
));

快速提示:自symfony 2.3以来,您可以在FormType中包含提交按钮,而不必手动呈现它(reference)。

答案 1 :(得分:0)

要在表单顶部显示所有错误,请执行以下操作

<ul>
    {% for error in form.vars.errors.form.getErrors(true) %}
        <li>{{ error.message }}</li>
    {% endfor %}
</ul>