gpt4 book ai didi

php - 如何在 Symfony 4 服务中使用 renderView 和 twig 模板

转载 作者:行者123 更新时间:2023-12-04 01:31:10 28 4
gpt4 key购买 nike

我正在我的新 Symfony 4 应用程序中创建一个电子邮件服务。

我已经尝试了一百万件事,但没有运气。目前我只能为 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;
}
}

最佳答案

首先,您需要将模板服务注入(inject)到您的类中(构造函数注入(inject)),然后您可以使用它来呈现模板。

在代码中你可以看到我们在构造函数中对其进行了类型提示,因此 Symfony 依赖注入(inject)知道我们需要什么。然后我们就使用它。您的 $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;
}
}

关于php - 如何在 Symfony 4 服务中使用 renderView 和 twig 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50672754/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com