Forms Symfony FOSUserBundle替代表格

Forms Symfony FOSUserBundle替代表格,forms,symfony,fosuserbundle,Forms,Symfony,Fosuserbundle,我正在尝试覆盖FOSUserBundle默认注册表。确切地说,我正在尝试删除用户名。问题可能出在服务方面。但不确定。 services.yml文件: services: user.registration.form.type: class: Atotrukis\MainBundle\Form\Type\RegistrationFormType tags: - { name: form.type, alias: user_regist

我正在尝试覆盖FOSUserBundle默认注册表。确切地说,我正在尝试删除用户名。问题可能出在服务方面。但不确定。 services.yml文件:

services:
    user.registration.form.type:
        class: Atotrukis\MainBundle\Form\Type\RegistrationFormType
        tags:
            - { name: form.type, alias: user_registration }
security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

    firewalls:
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin/, role: ROLE_ADMIN }
RegistrationFormType.php

<?php

namespace Atotrukis\MainBundle\Form\Type;

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

class RegistrationFormType extends BaseType
{

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

        parent::buildForm($builder, $options);
        $builder->remove('username');
    }

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

}

?>

您的代码有两个问题

表单的继承不是通过类扩展来完成的,而是通过
getParent()
方法的定义来完成的。您可以定义服务的名称。例如

class RegistrationFormType extends AbstractType
{
    public function getParent()
    {
        return 'fos_user_registration';
    }
}
您忘记了在bundle配置中定义类

# app/config/config.yml
fos_user:
    registration:
        form:
            type: user.registration.form.type

. 您使用的是版本1.3还是2+,尽管它可能无法提供您想要的内容,但我正在使用Symfony 2.5.3和FOSUSerBundle 2.0