РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1240 of 1361 menu

Команда make:registration-form

Команда make:registration-form создаёт полноценный механизм регистрации нового пользователя в приложении Symfony. Команда генерирует класс формы, контроллер с логикой обработки данных и Twig-шаблон для отображения. Первым параметром передаётся имя класса формы, которое также используется для именования контроллера и шаблона.

Синтаксис

php bin/console make:registration-form

Пример

Давайте запустим команду без параметров, чтобы мастер задал все вопросы в интерактивном режиме:

php bin/console make:registration-form

В процессе выполнения команда задаст несколько вопросов. Первый вопрос - имя класса формы:

What class name would you like to use for your registration form [RegistrationFormType]: > RegistrationFormType

Далее команда спросит, нужно ли добавлять поле для ввода пароля и поле для подтверждения пароля:

Do you want to add a password field to your form? (yes/no) [yes]: > yes Do you want to add a password confirmation field? (yes/no) [yes]: > yes

Затем команда уточнит, нужно ли автоматически аутентифицировать пользователя после регистрации:

Do you want to automatically authenticate the user after registration? (yes/no) [yes]: > yes

После этого будут сгенерированы файлы формы, контроллера и шаблона. Команда выведет список созданных файлов:

created: src/Form/RegistrationFormType.php created: src/Controller/RegistrationController.php created: templates/registration/register.html.twig Success!

Пример

Давайте посмотрим на сгенерированный класс формы RegistrationFormType:

<?php namespace AppForm; use AppEntityUser; use SymfonyComponentFormAbstractType; use SymfonyComponentFormExtensionCoreTypeEmailType; use SymfonyComponentFormExtensionCoreTypePasswordType; use SymfonyComponentFormExtensionCoreTypeRepeatedType; use SymfonyComponentFormExtensionCoreTypeSubmitType; use SymfonyComponentFormFormBuilderInterface; use SymfonyComponentOptionsResolverOptionsResolver; use SymfonyComponentValidatorConstraintsNotBlank; use SymfonyComponentValidatorConstraintsLength; class RegistrationFormType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('email', EmailType::class, [ 'constraints' => [ new NotBlank([ 'message' => 'Please enter an email', ]), ], ]) ->add('plainPassword', RepeatedType::class, [ 'type' => PasswordType::class, 'first_options' => [ 'label' => 'Password', ], 'second_options' => [ 'label' => 'Confirm Password', ], 'invalid_message' => 'The password fields must match.', 'constraints' => [ new NotBlank([ 'message' => 'Please enter a password', ]), new Length([ 'min' => 6, 'minMessage' => 'Your password should be at least {{ limit }} characters', 'max' => 4096, ]), ], ]) ->add('agreeTerms', CheckboxType::class, [ 'mapped' => false, 'constraints' => [ new IsTrue([ 'message' => 'You should agree to our terms.', ]), ], ]) ->add('save', SubmitType::class, [ 'label' => 'Register', ]); } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => User::class, ]); } } ?>

Пример

Давайте рассмотрим сгенерированный контроллер RegistrationController:

<?php namespace AppController; use AppEntityUser; use AppFormRegistrationFormType; use DoctrineORMEntityManagerInterface; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationRequest; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentPasswordHasherUserPasswordHasherInterface; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentSecurityHttpAuthenticationLoginFormLoginFormAuthenticator; use SymfonyComponentSecurityHttpAuthenticationUserAuthenticatorInterface; class RegistrationController extends AbstractController { #[Route('/register', name: 'app_register')] public function register( Request $request, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager, UserAuthenticatorInterface $userAuthenticator, LoginFormAuthenticator $authenticator ): Response { $user = new User(); $form = $this->createForm(RegistrationFormType::class, $user); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $user->setPassword( $userPasswordHasher->hashPassword( $user, $form->get('plainPassword')->getData() ) ); $entityManager->persist($user); $entityManager->flush(); $userAuthenticator->authenticateUser( $user, $authenticator, $request ); return $this->redirectToRoute('app_home'); } return $this->render('registration/register.html.twig', [ 'registrationForm' => $form, ]); } } ?>

Пример

Давайте рассмотрим сгенерированный Twig-шаблон register.html.twig:

{% extends 'base.html.twig' %} {% block title %}Register{% endblock %} {% block body %} <h1>Register</h1> {{ form_errors(registrationForm) }} {{ form_start(registrationForm) }} {{ form_row(registrationForm.email) }} {{ form_row(registrationForm.plainPassword, { label: 'Password' }) }} {{ form_row(registrationForm.agreeTerms) }} <button type="submit" class="btn">Register</button> {{ form_end(registrationForm) }} {% endblock %}

Смотрите также

  • команда make:user,
    которая создаёт класс пользователя
  • команда make:auth,
    которая генерирует систему аутентификации
  • команда make:reset-password,
    которая создаёт форму сброса пароля
  • команда make:form,
    которая генерирует класс формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить