我有一个PRE_SUBMIT事件,如果出现错误,我会尝试更正字符串。在这种情况下,我想使用" addError"在某些情况下在特定领域。
如果我这样做:
$form->addError(new \Symfony\Component\Form\FormError('my message'));
"我的留言"出现,但如果我尝试:
$form->get('my_field_name')->addError(new FormError('my message'));
"我的留言"尽管我把所有的我都放在了Twig上,但它似乎永远不会出现。
你知道出了什么问题吗?
答案 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
中添加错误来避免此错误,该错误将按预期工作。