Symfony 3 - нельзя использовать $ this-> renderView () из статической функции - PullRequest
0 голосов
/ 09 мая 2019

У меня есть файл Mails.php, который заботится об отправке различных писем в соответствии с тем, что я передаю ему в качестве параметра от моих контроллеров.

Поэтому функции Mails.php являются статическими функциями.В одном из них я должен использовать, чтобы отправить электронное письмо, это:

->setBody($this->renderView("@Pages/swiftmail/CreationCompte/AccepterDemandeCreationCompte.html.twig",array(
 // some variables
)));

Это позволяет функции извлекать сообщение в выделенном файле ветки.

Однако,так как это статическая функция, которую мне нужно использовать, я вынужден заменить $ this-> на self :: Но она не работает:

->setBody(self::renderView("@Pages/swiftmail/CreationCompte/AccepterDemandeCreationCompte.html.twig",array(
//some variables
)));

РЕДАКТИРОВАТЬ: у меня сейчас:

Services.yml:

templating:
    class: Site\PagesBundle\Utils\Mails
    arguments: [templating]

Mail.php:

class Mails

{

private $templating;

    public function __construct(\Twig_Environment $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':
                // (1) Confirmation de demande d'inscription
                $message->setSubject("Création de votre compte ATELECH prise en compte")
                        ->setBody($this->templating->render("@Pages/swiftmail/CreationCompte/DemandeCreationCompte.html.twig",array(
                            'prenom'=>$user->getPrenom(),
                            'nom'=>$user->getNom(),
                            )));
                break;


//...

}

DefaultController.php:

$templating = new \Twig_Environment;

$mail = new Mail($templating);

$mail->sendMail($user,'formulaireInscription');

Но у меня есть: enter image description here

...