2

私のExampleUserBundle拡張しFOSUserBundleます。そして、私はこのようにオーバーライドしますRegistrationFormType:

<?php
// Example/UserBundle/Form/Type/RegistrationFormType.php

namespace Example\UserBundle\Form\Type;

use Symfony\Component\Form\FormBuilderInterface;
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType;

class RegistrationFormType extends BaseType
{

    public function buildForm(FormBuilderInterface $builder, array $options) {
        parent::buildForm($builder, $options);
        $builder->remove('username');
    }

    public function getName() {
        return 'example_user_registration';
    }

}

サービスの宣言:

// Example/UserBundle/Ressources/Config/services.yml
services:
    example_user.registration.form.type:
        class: Example\UserBundle\Form\Type\RegistrationFormType
        arguments: [%fos_user.model.user.class%]
        tags:
            - { name: form.type, alias: example_user_registration }

そして /app/config/config.yml で:

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: Example\UserBundle\Entity\User
    registration:
        form:
            type: example_user_registration

このフォームで新しいフォームを作成するUserと、基本的な検証ルールはFOSUserBundle上書きされません。(電子メール -> 一意; パスワード -> 3 文字以上; ...)。

4

3 に答える 3

1

基本的な解決策は、登録フォームに別の検証グループを指定することです。

解決策は私のために働いた:フォームの検証 - ラベルを2回取得しています

于 2013-11-04T14:39:57.003 に答える