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