2014-03-03 134 views
1

问题:我提交表单时的Symfony2:验证约束提交表单时,忽视与多个验证组

Length约束被忽略。

实体:

/** 
* @Assert\Length(min = "6") 
* @Assert\NotBlank(groups={"registro"}) 
*/ 
private $password; 

FormType:

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{ 
    $resolver->setDefaults(array(
    'data_class' => 'BikeApp\UsuariosBundle\Entity\Usuarios', 
    'validation_groups' => array('default', 'registro') 
    ));  
} 
+0

有你尝试使用validation.yml而不是assert? http://symfony.com/doc/current/book/validation.html 我有一种感觉断言只有当你保存一个实体的作品。 –

回答

2

根据不断Symfony\Component\Validator\Constraint::DEFAULT_GROUP,默认验证组不defaultDefault

+0

谢谢,它解决了这个问题。我改变了'validation_groups'=> array('default','registro')));到'validation_groups'=> array('Default','registro')));现在它工作。 – stewiefm

0

出于某种原因,其没有得到您的实体中调用,所以尝试在buildForm()方法添加验证约束

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('nombre') 
     ->add('apellidos') 
     ->add('email', 'email', array('label' => 'Correo electrónico', 'attr' => array(
      'placeholder' => '[email protected]' 
     ))) 
     ->add('password', 'repeated', array(
      'type' => 'password', 
      'invalid_message' => 'Las dos contraseñas deben coincidir', 
      'first_options' => array('label' => 'Contraseña'), 
      'second_options' => array('label' => 'Repite Contraseña'), 
      'required'  => true, 
      'constraints'  =>array(new Assert\Length(array('min' => 6,'message'=>'La contraseña debe tener al menos {{ limit }} carácteres'))) 
      )) 
     ->add('fechaNacimiento', 'birthday', array('required'=> false, 'widget' => 'single_text')) 
     ->add('dni') 
     ->add('newsletter', 'checkbox', array('required' => false));  
} 

不要忘记你的窗体类前添加使用

use Symfony\Component\Validator\Constraints as Assert;