设置类型时,表单字段的Symfony2验证

时间:2014-08-21 17:35:27

标签: php forms validation symfony

我使用注释设置了对类成员变量的约束:

/* @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将字段的输入类型从文本更改为密码。

但是,我觉得我应该能够在表单中注入带注释的约束,同时还要指定字段的类型。我想这一定是一个普遍的问题。我错过了什么?

1 个答案:

答案 0 :(得分:0)

您不需要在表单类型中设置约束来验证您的课程。 首先检查您的注释,它必须以双" *" 开头。

要生成表单,您应该在表单中添加方法' setDefaultOptions'使用' data_class'属性:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{   
    $resolver->setDefaults(array(
        'data_class' => 'XXX\YourBundle\Entity\YourEntity',
        'id' => null
        ));     
}

将使用您班级中定义的约束验证数据