Bonjour,
En base de données, différents contenus de mails sont stockés ('id', 'type', 'content'). Lorsqu'un mail est envoyé à l'utilisateur, dans le controller, le contenu approprié est sélectionné (en fonction du type) et est affecté à une variable transmise au template Twig. Cette variable peut contenir un lien vers une route (notamment lorsque l'utilisateur doit modifier son mot de passe).
Mon problème est que, dans ce cas, j'obtiens cette erreur lors du clic sur le lien :
Cannot GET /email/P1ZbEPWQ/%7B%7Babsolute_url(path('security.resetting',%20%7B'id':%20mail.receiver.id,%20'token':%20mail.receiver.token%7D))%7D%7D
Par contre, si le lien est directement mis en dur dans le template (sans lire le contenu de la variable donc), tout se passe correctement.
Voici mon code
Dans le controller :
En base de donnée, la valeur du champ email_content contient ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 ... $mail = new Mail; $emailContent = $manager->getRepository(EmailContent::class)->findBy(array('type' => 'Password resetting email')); $mail->setReceiver($user) ->setSubject($this->getParameter('password_Resetting_email_subject')) ->setSender($administrator) ->setMessage('Password renew') ->setBody($this->renderView( 'communication/toUserEmail.html.twig', [ 'mail' => $mail, 'content' => $emailContent[0]->getContent() ] ) ) ; ...
Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ... <p><a href="{{absolute_url(path('security.resetting', {'id': mail.receiver.id, 'token': mail.receiver.token}))}}">change the password</a>.</p> ...
Dans le template :
Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ... <pre> Hello {{ mail.receiver.firstname }}, <br><br> {{ content | raw }} </pre> ...
Par contre, le code suivant ne donne pas d'erreur et ouvre la bonne url :
Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ... <a href="{{absolute_url(path('security.resetting', {'id': mail.receiver.id, 'token': mail.receiver.token}))}}">change the password</a>. ...
Je ne vois pas comment résoudre ce problème. Quelqu'un aurait une idée?
Merci d'avance pour votre aide.
Partager