Mil*_* M. 2 php dependency-injection symfony twig symfony4
我正在新的Symfony 4应用程序中创建一个Emailer服务.
我尝试了一百万件但没有运气.我目前只能为S4找到关于这个主题的一些资源.任何帮助表示赞赏.
这就是我想要实现的目标.我知道我必须在我的Emailer服务中使用不同的服务,但没有运气.
<?php
namespace App\Mailer;
class Emailer
{
public function sendWelcome($email): \Swift_Mailer
{
$message = (new \Swift_Message('P****** - Welcome In!'))
->setFrom('no-reply@p****n.com')
->setTo($email)
->setBody(
$this->renderView(
// templates/emails/registration.html.twig
'emails/registration.html.twig',
array('name' => $user->getUsername())
),
'text/html'
)
->setCharset('utf-8');
$mailer->send($message);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
首先,您需要将您的模板服务注入您的类(构造函数注入),然后您可以使用它来呈现模板.
在代码中,您可以看到我们在构造函数中对其进行类型提示,因此Symfony Dependency注入知道我们需要什么.然后我们就使用它.与您的$mailer服务相同.
<?php
namespace App\Mailer;
use Symfony\Component\Templating\EngineInterface;
class Emailer
{
/**
* @var EngineInterface
*/
private $templating;
/**
* TestTwig constructor.
*/
public function __construct(EngineInterface $templating)
{
$this->templating = $templating;
}
public function sendWelcome($email): \Swift_Mailer
{
$message = (new \Swift_Message('P****** - Welcome In!'))
->setFrom('no-reply@p****n.com')
->setTo($email)
->setBody(
$this->templating->render(
// templates/emails/registration.html.twig
'emails/registration.html.twig',
array('name' => $user->getUsername())
),
'text/html'
)
->setCharset('utf-8');
$mailer->send($message);
return true;
}
}
Run Code Online (Sandbox Code Playgroud)