以这种方式创建注册表后: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()
)
);
您能帮助我正确解决此问题吗?
答案 0 :(得分:0)
在班级和细枝中将所有单词: 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文档)。
问候 莱克