首页 > 解决方案 > [symfony] 连接注册在同一页面?

问题描述

我的 symfony 代码确实有问题,我实际上正在搜索如何在同一页面上放置两个表单,一个用于连接,一个用于登录,如果我提交注册表单,这将显示错误,因为它是指定页面在 security.yaml 中:这是我的注册表单的代码...

class SecurityController extends AbstractController
{
    /**
     * @Route("/", name="register_login")
     */
    public function register(UserPasswordEncoderInterface $hasher,
    Request $request, ObjectManager $manager)
    {
        $userInfos = new UserInfos();        
        $form = $this->createForm(RegistrationType::class, $userInfos);
        $form->handleRequest($request);
        if($form->isSubmitted() && $form->isValid())
        {
            $userInfos->setLastConnection(new \DateTime());
            $userInfos->setSubscribedAt(new \DateTime());
            $userInfos->setPassword($hasher->encodePassword($userInfos,
            $userInfos->getPassword()));
            $manager->persist($userInfos);
            $manager->flush();
        }
        return $this->render('security/login.html.twig', [
            'formUser' => $form->createView()
        ]);
    }
}

它返回带有登录表单的树枝文件......

<form class="form-inline my-2 my-lg-0" action="{{ path('register_login') }}" method="post">
            <input class="form-control mr-sm-2" required type="email" name="_username" placeholder="Email">
            <input class="form-control mr-sm-2" required type="password" name="_password" placeholder="Mot de passe">
            <button class="btn btn-success my-2 my-sm-0" type="submit">Connexion</button>
        </form>

我的 security.yaml 配置:安全性:编码器:App\Entity\UserInfos:算法:bcrypt

# https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
providers:
    in_memory: { memory: ~ }
    DB:
        entity:
            class: App\Entity\UserInfos
            property: email
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        anonymous: true
        provider: DB
        form_login:
            login_path: register_login
            check_path: register_login

感谢您的关注。

标签: phpformssymfonyauthenticationconnection

解决方案


您将 2 个表格放在树枝中,您必须将表格放在一个控制器中(可能是注册)

把 $formRegister->createView(); $formLogin->createView() 在您的模板中。

一种形式的动作在 {{ path('register...') }} 并登录 {{ path('login') }}

但请注意,您必须控制所有变量,否则会显示错误


推荐阅读