У меня есть FOSUserBundle в моем проекте Symfony. Теперь я хочу удалить поле формы регистрации, которое по умолчанию предоставляется FOSUserBundle.Как удалить поле формы из FOSUserBundle Symfony2.8?
Форма регистрации полей:
Имя
Id Email
Пароль
Повторить пароль
Теперь я не хочу Email
поле, когда пользователь регистрируются поэтому я переопределяю регистрационную форму в своем пакете.
\\ Front\FrontBundle\Form\RegistrationType.php
<?php
namespace Front\FrontBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->remove('email'); // here I code for remove email field.
}
public function getParent()
{
return 'FOS\UserBundle\Form\Type\RegistrationFormType';
// Or for Symfony < 2.8
// return 'fos_user_registration';
}
public function getBlockPrefix()
{
return 'app_user_registration';
}
// For Symfony 2.x
public function getName()
{
return $this->getBlockPrefix();
}
}
затем меняет config.yml и файл services.yml
\\ App/config/config.yml
fos_user:
db_driver: orm
firewall_name: main
user_class: Front\FrontBundle\Entity\User
registration:
form:
type: Front\FrontBundle\Form\RegistrationType
\\app/config/services.yml
services:
app.form.registration:
class: Front\FrontBundle\Form\RegistrationType
tags:
- { name: form.type, alias: app_user_registration }
Так После сделано с этим электронной почтой полем удалить из моей регистрационной формы, но когда я отправить форму после заполнения username
, password
repeat password
, это сообщите мне об ошибке The email is not valid
.
Поэтому мне нужно изменить любой другой файл, чтобы удалить проверку электронной почты с помощью поля электронной почты?
Спасибо.
'email' является обязательным полем модели, FOSUser предоставить вам расширяется. Если вы этого не хотите, просто не расширяйте FOS \ UserBundle \ Model \ User. – Federkun
@Federico вы можете объяснить подробно? В каком файле мне нужно изменить? – Dhaval
Так как 'email' определен в абстракции, предоставляемой FOSUserBundle, вы в значительной степени вынуждены его использовать. Я считаю, что простым решением является переопределить метод setUsername вашей модели и установить здесь фальшивое (действительное и уникальное) сообщение. – Federkun