symfony -- FOSUserBundle Как переопределить стандартную форму авторизации?

Код моего класса RegistrationType, расширяющего стандартный:

<?php

namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

/**
 * Форма регистрации пользователя
 */
class RegistrationType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('adress');
        $builder->add('mobileNumber');
    }

    public function getParent()
    {
        return 'FOS\UserBundle\Form\Type\RegistrationFormType';
    }

    public function getBlockPrefix()
    {
        return 'app_user_registration';
    }

}

С таким кодом я получаю стандартную форму с добавленными полями adress и mobileNumber.

Вопросы

  1. Что нужно изменить, чтобы выводились только мои поля, без стандартных?
  2. Где можно выбрать, какие из стандартных полей я хочу использовать, какие - нет, и назначить им другие названия?

Решение

Вот мой рабочий вариант:

/**
 * Форма регистрации пользователя
 */
class RegistrationType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('address', TextType::class, [
            'label' => 'Адрес дома',
            'attr'=> [
                'placeholder' => 'Воронеж, Рабочий проспект, д 100',
                'class' => 'info-input',
            ],
        ]);
        $builder->add('mobileNumber', TextType::class, [
            'label' => 'Мобильный телефон',
            'attr'=> [
                'placeholder' => '+7 (999) 123-45-67',
                'class' => 'info-input-phone',
            ],
        ]);
        $builder->add('username', TextType::class, [
            'label' => 'ФИО',
            'attr'=> [
                'placeholder' => 'Иванов Иван Иванович',
                'class' => 'info-input',
            ],
        ]);
        $builder->add('code', TextType::class, [
            'label' => 'Код из СМС',
            'attr'=> [
                'placeholder' => '9876',
                'class' => 'info-input-sms',
            ],
            'mapped' => false,
        ]);
        
        $builder->remove('email');
        $builder->remove('plainPassword');
        
    }

    public function getParent()
    {
//        return 'fos_user_registration';
        return 'FOS\UserBundle\Form\Type\RegistrationFormType';
    }
    
    public function getName()
    {
        return $this->getBlockPrefix();
    }

    public function getBlockPrefix()
    {
        return 'app_user_registration';
    }
        
}

Теперь Вам возможно понадобиться скорректировать валидацию удалённых полей.

vedro-compota's picture

Что нужно изменить, чтобы выводились только мои поля, без стандартных?
Где можно выбрать, какие из стандартных полей я хочу использовать, какие - нет, и назначить им другие названия?

В общем случае: Вам нужно перехватить управление отображением полей формы.
(сначала посмотрев как это делается самим бандлом).
Перехват обычно осуществляется в общем случае как-то так.

_____________
матфак вгу и остальная классика =)