1

我将 FOSUserBundle 与自定义注册表单一起使用,该注册表单扩展了捆绑包提供的注册表单。我想覆盖验证,所以它不检查用户名(我生成它)。我已经读过这可以通过使用验证组来实现。

这些是我的表格的相关部分:

public function buildForm(FormBuilderInterface $builder, array $options)
{

    parent::buildForm($builder, $options);

    ...

    $builder->remove('username');

    ...

}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'Ysu\Bundle\SiteBundle\Entity\User',
        'validation_groups' => array('my-registration-group'),
        'cascade_validation' => true
    ));
}

...

但是,用户名仍会使用捆绑包提供的验证文件进行验证。我发现$options(array) 包含一个数组validation_groups,该数组又包含“注册”组,所以这就是该字段仍然有效的原因。但是,我不知道如何删除它。如果我$options在将其传递给它之前取消设置它parent::buildForm仍将包含该Registration组。

有谁知道如何解决这个问题?

4

1 回答 1

0

原来你可以在 config.yml 中为 FOSUserBundle 的表单配置验证组:

fos_user:
    ....
    registration:
        form:
            validation_groups:  [default, registration_mod]
            ....
于 2012-10-01T16:04:08.983 回答