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

Changing form data after failed validation in Symfony2

我如何在验证失败后更改视图数据(我想在显示验证错误时更改复选框值以解释为什么你不能 select 它)。我想表单事件在这里没有帮助,因为验证发生在最后。

来自 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 您可以在代码中使用相同的检查。

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

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