我将 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
组。
有谁知道如何解决这个问题?