在 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
}
我如何在验证失败后更改视图数据(我想在显示验证错误时更改复选框值以解释为什么你不能 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
}