Php Symfony Twig-允许在HTML转义元素中使用Twig全局变量

Php Symfony Twig-允许在HTML转义元素中使用Twig全局变量,php,symfony,twig,Php,Symfony,Twig,我正在尝试一些比较实验性的东西,我希望可以做到 我正在写一个应用程序,它有一个CMS系统与它建立。我希望允许用户分配他们自己的全局细枝,并在他们创建的页面中使用它们 例如,用户可以创建一个名为foo的变量。在twig文件中,您可以使用{{foo}}引用它,因为它已加载到全局范围中 我希望能够使用这些全局变量,但是在|raw转义元素中呈现,例如页面内容 因此,当前要加载HTML元素,我必须使用{{page.content | raw}。不幸的是,这会导致foo变量呈现出{{{foo}},因为它没有

我正在尝试一些比较实验性的东西,我希望可以做到

我正在写一个应用程序,它有一个CMS系统与它建立。我希望允许用户分配他们自己的全局细枝,并在他们创建的页面中使用它们

例如,用户可以创建一个名为
foo
的变量。在twig文件中,您可以使用
{{foo}}
引用它,因为它已加载到全局范围中

我希望能够使用这些全局变量,但是在
|raw
转义元素中呈现,例如页面内容

因此,当前要加载HTML元素,我必须使用
{{page.content | raw}
。不幸的是,这会导致
foo
变量呈现出
{{{foo}}
,因为它没有被识别为使用它作为变量


有没有办法使
{{{foo}}
呈现为变量而不是字面上的变量?

使用
模板\u from_string
细枝函数:


我会非常小心,通过|raw过滤器运行任何用户输入都可能导致XSS攻击。 此外,您可能还想阅读这篇关于模板注入攻击的文章。如果你允许你的用户写小树枝的东西,你可能会有风险

至于你问题的解决办法

也许你可以用它

{% include 'AcmeYourBundle:User:PageOutput.html.twig' with {'userVars': UserVars} only %}
其中UserVars是来自用户的变量。然后你可以做一个

{% for var in UserVars %}

在模板中包括。

Edit:Nevermind,是的。能够同时呈现html,这是否很好?或者它与
|raw
过滤器的功能相同,并且能够访问细枝变量?是的,它应该可以很好地处理函数include周围的任何html。不幸的是,由于变量本身就是内容的一部分,这将无法工作,因为我必须以某种方式将变量从流中分离出来。