symfony -- FOSUserBundle Как переопределить стандартную форму авторизации?
Primary tabs
Код моего класса 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.
Вопросы
- Что нужно изменить, чтобы выводились только мои поля, без стандартных?
- Где можно выбрать, какие из стандартных полей я хочу использовать, какие - нет, и назначить им другие названия?
Решение
Вот мой рабочий вариант:
/** * Форма регистрации пользователя */ 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'; } }
Теперь Вам возможно понадобиться скорректировать валидацию удалённых полей.
- Log in to post comments
- 3450 reads
vedro-compota
Sun, 10/01/2017 - 13:24
Permalink
общие рекомендации
В общем случае: Вам нужно перехватить управление отображением полей формы.
(сначала посмотрев как это делается самим бандлом).
Перехват обычно осуществляется в общем случае как-то так.
_____________
матфак вгу и остальная классика =)