У меня есть файл 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');
Но у меня есть: