0

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

我试图从表单构建器中删除数据参数并删除选项解析器然后工作,但我知道这不是一个正确的解决方案。

从 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()
            )
        );

你能帮我正确解决这个问题吗?

4

1 回答 1

0

Symfony4寄存器形式错误

将所有单词:plainPassword更改为类和树枝中的密码:

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

并从 (src/Form/RegistrationFormType.php) 更改为 true 或删除:

'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:user 不创建 plainPassword (方法和变量),但创建 register-form 和模板有 'plainPassword' 变量(愚蠢的 symfony 文档)。

问候莱克

于 2019-06-16T19:50:59.740 回答