0

我正在尝试使用字符串作为发送电子邮件的模板。有些像这样。

$twig = new \Twig_Environment(new \Twig_Loader_String());
$rendered = $twig->render(
  "Test string template: {{ result }}",
  array("result" => "Success!")
);

但这不允许我使用 Symfony 扩展。我用谷歌搜索了一下,我发现更好的方法是使用类似的东西

{{ include(template_from_string("Hello {{ name }}")) }}

有点像这样的服务配置

acme.twig.extension.loader:
class:        Twig_Extension_StringLoader
tags:
     - { name: 'twig.extension' }

但是,我不使用如何使用此扩展,即在这种情况下如何传递数据(数组)以及将这段代码放在哪里......在另一个模板中?

有人可以给我任何提示吗...

4

2 回答 2

0

你试过“renderView”吗?

$emailBody = $this->renderView('TestBundle:Default:emailTemplate.html.twig', array(
    'result' => 'Success!'
));
于 2015-01-13T09:12:30.283 回答
0

我最近遇到了类似的问题(交响乐之外),对我有用的是

$twig = new \Twig_Environment(new \Twig_Loader_String(), array('debug'=>true));
if ( WP_DEBUG ) {
    $twig->addExtension(new \Twig_Extension_Debug());
}
$twig = apply_filters('twig_apply_filters', $twig);
$twig = apply_filters('timber/twig/filters', $twig);
$twig = apply_filters('timber/twig/functions', $twig);
$twig = apply_filters('timber/twig/escapers', $twig);
$twig = apply_filters('timber/loader/twig', $twig);

基本上,这些是木材装载机在实例化新树枝实例时使用的过滤器。这带来了各种树枝功能,过滤器等......

正确填写 $twig 后,您应该能够充分呈现您的字符串模板。

于 2018-04-20T15:33:48.007 回答