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(配列)には「登録」グループを含む配列が含まれていることがわかりました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 に答える