由make:registration-form制作的Symfony 4.3错误

时间:2019-06-15 17:56:57

标签: symfony symfony-4.3

以这种方式创建注册表后:https://symfony.com/doc/current/doctrine/registration_form.html 创建帐户存在问题。在以前的版本中,我以相同的方式进行操作,并且没有任何问题。我不确定这是一个错误还是我做错了什么方法。表格仍然无效。在Profiler-> Validation中,我可以看到一个调用:data.password此值不应为null。

我试图从表单生成器中删除数据参数并删除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 个答案:

答案 0 :(得分:0)

Symfony4寄存器格式错误

在班级和细枝中将所有单词: plainPassword 更改为 password

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

秒 php bin / console make:用户不创建plainPassword(方法和变量),但是创建寄存器形式和模板具有'plainPassword'变量(愚蠢的symfony文档)。

问候 莱克