我使用注释设置了对类成员变量的约束:
/* @Assert\Length(min="3") */
protected $password;
当我添加对应于此变量的字段而不指定其类型时,此约束将添加到表单类中构建的表单中:
$builder->add('password');
该类型被猜为“文本”。 但是,我希望此字段的输入类型为“密码”。 但是当我指定这样的类型时:
$builder->add('password', 'password');
未添加注释中的约束。
我知道我可以将约束添加到表单类中的字段:
$builder->add('password', 'password',
array('constraints' => new Assert\Length(array('min' => 3))))
或者我可以使用JavaScript将字段的输入类型从文本更改为密码。
但是,我觉得我应该能够在表单中注入带注释的约束,同时还要指定字段的类型。我想这一定是一个普遍的问题。我错过了什么?
答案 0 :(得分:0)
您不需要在表单类型中设置约束来验证您的课程。 首先检查您的注释,它必须以双" *" 开头。
要生成表单,您应该在表单中添加方法' setDefaultOptions'使用' data_class'属性:
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'XXX\YourBundle\Entity\YourEntity',
'id' => null
));
}
将使用您班级中定义的约束验证数据