我正在尝试发送带有令牌的电子邮件,以便重新发送自动密码。但我认为我正在检索以下错误:
/**
* @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实例。”为什么?
谢谢您的解释
答案 0 :(得分:1)
您的操作参数中有“ User $ user”,但请求中没有参数“ user”,因此我猜您的ParamConverter不能将其转换为User对象。
将您的路线设置为GET路线,格式如下:
/**
* @Route("/forget-email/{user}", name="forget", methods="GET")
*/
只要用户想要什么(邮件,用户名,uid等),只要它允许您检索用户对象并将paramconverter转换为Doctrine对象即可。