我无法摆脱这个错误:Object of class Symfony\Bridge\Twig\Mime\WrappedTemplatedEmail could not be converted to string
我的设置:php 8.2symfony 6.2 mailer 6.2,我使用maildev
我想用ajax生成邮件发送。
我的服务:
use Symfony\Bridge\Twig\Mime\TemplatedEmail; use Symfony\Component\Mailer\MailerInterface; public function send(string $from, string $to, string $subject, string $template, array $context): void { //$context2 = clean_input($context); $email = (new TemplatedEmail()) ->from($from) ->to($to) ->subject($subject) ->htmlTemplate("emails/$template.html.twig") ->context($context); // On envoie le mail $this->mailer->send($email); }
如果我把->;context([$context])而不是->;context($context),在我的模板中,我得到了这个错误:没有变量“prenom”
我的控制器操作:
#[Route('/app_email', name: 'app_email', methods: ['POST'])] public function sendEmail(Request $request, SendMailService $mail): Response { if ($request->isXmlHttpRequest()) { $from = $this->getParameter('from_email'); $emailAdressTo = $request->request->get('email'); // To $template = 'contact'; $subject = "Envoi à partir du formulaire de contact du site Vous assurance"; $nom = $request->request->get('nom'); $prenom = $request->request->get('prenom'); $entreprise = $request->request->get('entreprise'); $message = $request->request->get('message'); $context = array( 'nom' => $nom, 'prenom' => $prenom, 'entreprise' => $entreprise, 'message' => $message, ); dump($from); dump($emailAdressTo); dump($subject); dump($template); dump(gettype($context)); $mail->send($from, $emailAdressTo, $subject, $template, $context); return new Response("ok"); } return new Response("Erreur : ceci n'est pas une requête ajax", 400); }
如果我注释掉$context变量,我的电子邮件将被发送
我的ajax函数:
var formNewContact = $('form[id="formContact"]'); formNewContact.on("submit", function (e) { e.preventDefault(); var formData = new FormData($(this)[0]); $.ajax({ method: "POST", url: "{{ path('app_email') }}", data: formData, processData: false, contentType: false, success: function (response) { if (response === 'ok') { } else { alert("Erreur"); } }, // Fin success error: function () { alert("Erreur serveur"); }, // Fin error }); // Fin ajax }); // Fin function submit form contact
我的模板:
<p>Bonjour,</p> <p><strong>De : </strong>{{ prenom }}<strong>{{ nom }}</strong>.</p> <p><strong>Email : </strong>{{ email }}</p> <p><strong>Entreprise : </strong>{{ entreprise }}</p> <p><strong>Message :</strong></p> <hr /> <p>{{message}}</p> <hr /> </div>
转储(gettype($context))->;大堆
谢谢你的帮助。