【问题标题】:Unable to guess how to get a Doctrine instance from the request information for parameter "class"无法猜测如何从参数“class”的请求信息中获取 Doctrine 实例
【发布时间】:2019-08-05 19:30:38
【问题描述】:

我正在尝试发送带有令牌的电子邮件以重新发送自动密码。但在我看来,我正在检索以下错误:

/**
     * @Route("/forget-email/", name="forget", methods="GET|POST")
     */
     public function emailrestore(Request $request, User $user, \Swift_Mailer $mailer)
     {
        $url = "test";
        $form = $this->createForm(ForgetPasswordType::class, $user);
        $form->handleRequest($request);
        $email = $form['email']->getData();
        $user = $this->getDoctrine()
        ->getRepository(User::class)
        ->find($email);
        if ( $email === $user ) {
            $mail = (new \Swift_Message('Hello Email'))
                ->setFrom('email@email.email')
                ->setTo($email)
                ->setBody(
                    $this->renderView(
                        // templates/emails/registration.html.twig
                        'emails/registration.html.twig',array('url' => $url,)
                    ),
                    'text/html'
                );
                $mailer->send($mail);
        } else{
            var_dump("$email");
        }

        return $this->render('forget/email.html.twig', [
            'form' => $form->createView(),
            'error' => null,
        ]);
     }

在我的实体中,我拥有独一无二的电子邮件

* @UniqueEntity(fields="email", message="Email already taken")

我正在检索以下错误: “无法猜测如何从参数“user”的请求信息中获取 Doctrine 实例。”为什么?

感谢您的提前解释

【问题讨论】:

标签: symfony symfony4


【解决方案1】:

您的操作参数中有“用户 $user”,但您的请求中没有参数“用户”,我的猜测是您的 ParamConverter 无法将这个参数转换为用户对象。

将您的路线设为 GET 路线,格式如下:

/**
 * @Route("/forget-email/{user}", name="forget", methods="GET")
 */

只要它允许你检索你的用户对象并让你的 paramconverter 将它转换成一个 Doctrine 对象,用户就是你想要的任何东西(邮件、用户名、uid 等)......

【讨论】:

    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 2021-01-20
    • 2015-12-14
    • 1970-01-01
    • 2016-05-03
    • 2019-11-25
    相关资源
    最近更新 更多