2014-03-03 50 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;