php – 如何在Symfony 4服务中使用renderView和twig模板
作者:互联网
我正在新的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;
}
}
解决方法:
首先,您需要将您的模板服务注入您的类(构造函数注入),然后您可以使用它来呈现模板.
在代码中,您可以看到我们在构造函数中对其进行类型提示,因此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;
}
}
标签:symfony4,php,symfony,twig,dependency-injection 来源: https://codeday.me/bug/20190910/1798895.html