我无法摆脱这个错误: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))->;大堆
谢谢你的帮助。