Ошибка Symfony 4.3 в форме, созданной make: регистрационная форма

После создания формы регистрации таким способом: https://symfony.com/doc/current/doctrine/registration_form.html Существует проблема с созданием учетной записи. В предыдущей версии я делал это точно так же, и проблем не было. Я не уверен, что это ошибка или я что-то делаю неправильно. Форма по-прежнему недействительна. В Profiler->Validation я вижу вызов: data.password Это значение не должно быть нулевым.

Я попытался удалить параметр данных из построителя форм и удалить Options Resolver, а затем работает, но я знаю, что это не правильное решение.

Удалено из RegistrationFormType.php:

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'data_class' => User::class,
    ]);
}

Изменено в RegistrationController.php:

public function register(Request $request, UserPasswordEncoderInterface $passwordEncoder, GuardAuthenticatorHandler $guardHandler, AppAuthenticator $authenticator): Response
{
    $user = new User();
    $form = $this->createForm(RegistrationFormType::class);
    $form->handleRequest($request);
    if ($form->isSubmitted() && $form->isValid()) {
        $user->setEmail($form->get('email')->getData());
        $user->setPassword(
            $passwordEncoder->encodePassword(
                $user,
                $form->get('plainPassword')->getData()
            )
        );

Можете ли вы помочь мне с правильным решением этой проблемы?

1 ответ

Ошибка регистрационной формы Symfony4

Измените все слова: plainPassword на пароль в классах и ветках:

src/Form/RegistrationFormType.php
templates/register/register.html.twig
src/ControllerRegistrationController.php

И измените на true или удалите из (src/Form/RegistrationFormType.php):

'mapped' => true,
// or hide
// 'mapped' => false,

Или добавьте переменную plainPassword в src/Entity/User.php и выполните

# Update User class add plainPassword
php bin/console make:entity
> User
...

# in sqlite3
php bin/console doctrine:schema:update --force

# or in mysql
php bin/console make:migration
php bin/console doctrine:migrations:migrate

PS php bin/console make: пользователь не создает plainPassword (метод и переменную), но создает форму-регистр и шаблон с переменной 'plainPassword' (глупые документы Symfony).

С уважением Laick

Другие вопросы по тегам