从 symfony2 中的控制器添加字段特定错误

Posted

技术标签:

【中文标题】从 symfony2 中的控制器添加字段特定错误【英文标题】:Adding a field specific error from the controller in symfony2 【发布时间】:2012-08-23 14:54:12 【问题描述】:

我的 symfony 表单正在进行一些复杂的验证,我需要能够从我的控制器将错误分配给特定字段。现在,我有这样的全局错误:

$error = new formerror("There is an error with the form");
$form->addError($error);

但这会产生全局错误,而不是绑定到特定字段。

有没有办法从我的控制器中对特定字段抛出错误?

【问题讨论】:

【参考方案1】:

感谢 IRC 的一些帮助(感谢@fkrauthan!)我想出了一个答案。

SF2 中的每个字段实际上都是表单的一个实例。您需要做的是访问该字段的表单对象,然后在其上添加错误。值得庆幸的是,symfony 提供了一种获取嵌入式表单/字段的方法。

这是我的代码:

$error = new FormError("There is an error with the field");
$form->get('field')->addError($error);

正如一些人所指出的,您需要在文件顶部包含 FormError 类: use Symfony\Component\Form\FormError;

【讨论】:

堆栈溢出不会让您在前 2 天接受自己的答案。 我需要在顶部包含什么作为 USE 才能正确使用 formerror 类? 您实际上不需要使用“使用”语句。你只需要在 new 之后通过完整的限定符。 $error = new \Symfony\Component\Form\FormError("该字段有错误"); 2019 年的 Symfony 4 仍然如此 @Chris 控制器将继续,但现在应该将表单标记为无效。

以上是关于从 symfony2 中的控制器添加字段特定错误的主要内容,如果未能解决你的问题,请参考以下文章

Symfony2 - 添加控制器安全性以限制用户对特定博客的访问

Symfony2 将自定义字段添加到表单构建器

访问 Symfony2 控制器中未映射的字段

如何从 symfony2 中删除实体

Symfony2 - 重载注册表单导致 CSRF 错误(添加 github repo)

向 Symfony 2 表单元素添加错误