6

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

这是我的表格

<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>

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

4

2 回答 2

11

您必须包含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 中包含提交按钮,而不必手动呈现它(参考)。

于 2013-09-17T11:45:40.757 回答
2

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

<ul>
    {% for error in form.vars.errors.form.getErrors(true) %}
        <li>{{ error.message }}</li>
    {% endfor %}
</ul>
于 2017-11-10T17:47:30.723 回答