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
- 4384 reads
vedro-compota
Sun, 10/01/2017 - 13:24
Permalink
общие рекомендации
В общем случае: Вам нужно перехватить управление отображением полей формы.
(сначала посмотрев как это делается самим бандлом).
Перехват обычно осуществляется в общем случае как-то так.
_____________
матфак вгу и остальная классика =)