因此,我有一个基本为空的树枝模板,应用程序生成了一些树枝代码,并将其作为变量传递到树枝模板中,如下所示:
return $this->render('blank.html.twig', [
'twig' => $this->generateTwig()
]);
blank.html.twig看起来像这样:
{{ twig }}
但是在渲染模板时,它内部只有未渲染的树枝代码,如下所示:
{% extends 'base.html.twig' %} {% block content %} <h1>{{ 'app-name'|trans }}...
在此示例中,如何渲染注入的树枝代码?
做一件file_put_contents('blank', $this->generateTwig())
作品,但这违背了使用模板的目的。
您可以解决这两种方法。您可以预渲染$this->generateTwig()
的输出,然后将HTML注入到blank.html.twig
模板中(未经测试的伪):
$template = $this->get('twig')->createTemplate($this->generateTwig());
$twig = $template->render();
return $this->render('blank.html.twig', [
'twig' => $twig,
]);
这种方法的缺点是必须调用{{ twig|raw }}
in blank.html.twig
,否则Twig将转义HTML。另外:在再次将树枝模板提供给Twig之前预渲染树枝模板感觉有点奇怪。
另一种方法是将模板加载到模板内部blank.html.twig
:
{{ include(template_from_string(twig)) }}
该template_from_string
函数是的一部分StringLoaderExtension
。
此处的文档:https : //twig.symfony.com/doc/3.x/recipes.html#loading-a-template-from-a-string
编辑:考虑到这一点,如果blank.html.twig
实际上只是输出{{ twig }}
以下内容的文件,则第三种方法甚至可能更简单:
$template = $this->get('twig')->createTemplate($this->generateTwig());
return $template->render();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句