Symfony 2.6:在PRE_SUBMIT事件中添加addError

时间:2015-05-16 14:20:20

标签: symfony

我有一个PRE_SUBMIT事件,如果出现错误,我会尝试更正字符串。在这种情况下,我想使用" addError"在某些情况下在特定领域。

如果我这样做:

$form->addError(new \Symfony\Component\Form\FormError('my message'));

"我的留言"出现,但如果我尝试:

$form->get('my_field_name')->addError(new FormError('my message'));

"我的留言"尽管我把所有的我都放在了Twig上,但它似乎永远不会出现。

你知道出了什么问题吗?

2 个答案:

答案 0 :(得分:0)

$form->addError(new \Symfony\Component\Form\FormError('my message'));

$form->get('my_field_name')->addError(new FormError('my message'));

是两件不同的事情。

在第一种情况下,您在表单元素上添加了一个错误,您可以在模板中使用{{ form_error(form) }}显示错误。在第二种情况下,您在表单的特定字段上添加了一个错误,您可以使用{{ form_error(form.my_field_name) }}显示错误。

如果您希望在表单中显示my_field_name上设置的错误,则必须在字段http://symfony.com/fr/doc/current/reference/forms/types/form.html#error-bubbling上使用error_bubbling选项

答案 1 :(得分:0)

我今天在Symfony 5上遇到了同样的事情,并且认为这是错误或文档错误,因此我将其报告给Symfony:https://github.com/symfony/symfony/issues/35831

希望此行为将被更改(允许在PRE_SUBMIT期间向表单字段添加错误),或者至少将其清楚地记录为限制/可能的意外行为。现在,您可以通过从不在PRE_SUBMIT中添加错误,而不是在POST_SUBMIT中添加错误来避免此错误,该错误将按预期工作。