Forms 为什么Symfony2表单显示默认错误值而不考虑验证?

Forms 为什么Symfony2表单显示默认错误值而不考虑验证?,forms,symfony,annotations,doctrine-orm,validation,Forms,Symfony,Annotations,Doctrine Orm,Validation,我正在继续研究Symfony2,发现了新的“问题” 让我描述一下这个问题。 我有一个类,它在一个条令实体上构造一个形式。它与中描述的注册表示例相同。唯一的区别是我使用的是教义而不是MongoDB 现在,我在User类中添加了以下字段 /** * @Assert\Type(type="integer", message="Not an integer.") * @ORM\Column(type="smallint", name="num") * * @var Smallint

我正在继续研究Symfony2,发现了新的“问题”

让我描述一下这个问题。 我有一个类,它在一个条令实体上构造一个形式。它与中描述的注册表示例相同。唯一的区别是我使用的是教义而不是MongoDB

现在,我在User类中添加了以下字段

 /**
 * @Assert\Type(type="integer", message="Not an integer.")     
 * @ORM\Column(type="smallint", name="num")
 * 
 * @var Smallint $num
 * 
 */
protected $num; 
然后,我通过添加以下行更新了UserType类中的函数buildForm:

public function buildForm(FormBuilder $builder, array $options)
{
    ...
    $builder->add('num', 'integer', array(
        'label' => 'Insert a number',
        ));
}
问题就在这里。尽管我通过注释提供了自定义消息,但字段num(即字符串值)的错误输入返回以下错误代码:“此值无效”,而不是“不是整数”

对自定义错误消息的这种遗漏的解释有什么想法吗?

尝试添加

'invalid_message' => "Not an integer'

buildForm
方法中。

是的,我知道!但这是不一样的。这只是个骗局,不是问题的答案。事实上,通过遵循此解决方案,您将为每个无效条目显示相同的错误消息。但是,通过注释可以定义不同的错误类型。无论如何,谢谢。然后您必须在
buildForm
方法中将字段设置为文本
此值无效
是因为在任何验证发生之前调用了
clientTransformer
引发异常。