在Symfony2中验证失败后更改表单数据

时间:2015-07-22 07:23:09

标签: symfony symfony-2.1

如何在验证失败后更改视图数据(我想在显示验证错误时更改复选框值以解释您无法选择它的原因)。我认为表格事件在这里没有帮助,因为验证最终会发生。

2 个答案:

答案 0 :(得分:1)

Symfony来自bootstrap布局的以下代码片段显示了如何检查表单字段是否有效:

{% block form_row -%}
{% spaceless %}
    <div class="form-group{% if (not compound or force_error|default(false)) and not valid %} has-error{% endif %}">
        {{ form_label(form) }}
        <div class="{{ block('form_group_class') }}">
            {{ form_widget(form) }}
            {{ form_errors(form) }}
        </div>
    </div>
{% endspaceless %}
{%- endblock form_row %}

查看if (not compound or force_error|default(false)) and not valid您可以在代码中使用相同的检查。

答案 1 :(得分:0)

简而言之,您应该为模型添加布尔值,将复选框类型添加到表示此值的FormType中,并在验证失败时将其设置为false,如下所示:

$form->setData($model);
if (!$form->isValid()) {
    $model->setFlag(false);
} else {
    // save model, redirect etc
}