Ошибка 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