无法猜测如何从参数“类”的请求信息中获取Doctrine实例

时间:2019-03-14 19:16:16

标签: symfony symfony4

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

/**
     * @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实例。”为什么?

谢谢您的解释

1 个答案:

答案 0 :(得分:1)

您的操作参数中有“ User $ user”,但请求中没有参数“ user”,因此我猜您的ParamConverter不能将其转换为User对象。

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

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

只要用户想要什么(邮件,用户名,uid等),只要它允许您检索用户对象并将paramconverter转换为Doctrine对象即可。