Symfony 3 - Некоторые трудности при использовании сервиса шаблонов для отправки почты - PullRequest
0 голосов
/ 10 мая 2019

У меня есть файл Mail.php, который содержит функцию sendMail, которая будет использоваться несколькими моими контроллерами.

Мне нужно использовать службу шаблонов. Но у меня проблемы с его установкой.

My Services.yml:

email_management:
    class: Site\PagesBundle\Utils\Mails
    arguments: ['@templating']
    public: true

My Mail.php:

<?php

namespace Site\PagesBundle\Utils;

use Site\PagesBundle\Entity\User;
use Site\PagesBundle\Entity\UserCas;

class Mails
{
    private $templating;

    public function __construct(EngineInterface $templating)
    {
        $this->templating = $templating;
    }

    public function sendMail($user,$raisonMail)
    {
        $transport = \Swift_SmtpTransport::newInstance();
        $mailer = new \Swift_Mailer($transport);

        // Entête
        $message = \Swift_Message::newInstance()
            ->setFrom(array('############' => '############'))
            //->setTo($user->getEmail());
            ->setTo("############")
            ->setCharset('utf-8')
            ->setContentType('text/html');

        switch($raisonMail)
        {
            case 'formulaireInscription':
                dump($user);
                // (1) Confirmation de demande d'inscription
                $message->setSubject("subject")
                        ->setBody($this->templating->render("@Pages/swiftmail/CreationCompte/DemandeCreationCompte.html.twig",array(
                            'prenom'=>$user->getPrenom(),
                            'nom'=>$user->getNom(),
                            )));
                break;

//... other cases

В моем контроллере:

 $templating = new EngineInterface;
    $mail = new Mail($templating);
    $mail->get('email_management')->sendEmail($user,$motif);

Но теперь у меня есть эта ошибка:

Сначала необходимо установить загрузчик.

enter image description here

Может кто-нибудь помочь мне, пожалуйста? Спасибо!

1 Ответ

0 голосов
/ 10 мая 2019

Предполагается, что целью является использование сервисной опции. Обратите внимание, что в целом класс сервиса предназначен для перемещения в другую папку в проекте (в папке PagesBundle / Service).

services.yml (обратите внимание на измененный путь)

email_management:
    class: Site\PagesBundle\Service\EmailManagementService
    arguments: ['@templating']
    public: true

EmailManagementService.php (обратите внимание на изменение местоположения и пространства имен)

<?php

namespace Site\PagesBundle\Service;

use Symfony\Bundle\FrameworkBundle\Templating\EngineInterface;
use Site\PagesBundle\Entity\User;
use Site\PagesBundle\Entity\UserCas;

class Mails
{
    private $templating;

    public function __construct(EngineInterface $templating)
    {
        $this->templating = $templating;
    }

    ...
}

Использование в контроллере:

$this->get('email_management')->sendMail($user,'formulaireInscription');
...