2012-03-09 55 views
7

我想逃离一个文件,我包括原料或逃跑包括在树枝

下面的代码不会逃脱文件“_custom_plugin_script.html.twig” html标签。有另一种方法吗?

<pre> 
    {% autoescape true %} 
     {% include "_custom_plugin_script.html.twig" | raw %} 
    {% endautoescape %} 
</pre> 

几天后,我找到了一个解决方法,但没有答案。所以第一个原料不会逃脱,所以我应该使用逃脱。但是,raw和escape不能在{%%}内使用,但在{{}}中使用。

所以来这里的解决办法

内容的行动

$customPluginScript = $app['twig']->render('_custom_plugin_script.html.twig', array(
    'data' => $data, 
)); 


return $app['twig']->render('confirm.html.twig', array(
    'data' => $data, 
    'customPluginScript' => $customPluginScript 
)); 

和confirm.html.twig

<script> 
// don't escape content of customPluginScript 
    {{ customPluginScript | raw }} 
</script> 


<!-- escape content of customPluginScript --> 
<pre> 
    {{ customPluginScript }} 
</pre> 
+2

['{{var | raw}}'](http://twig.sensiolabs.org/doc/filters/raw.html)是我通过Google发现此问题时所寻找的。 – 2014-04-25 12:46:48

回答

13
{% filter escape %} 
    {% include '...' %} 
{% endfilter %} 

的一部分请参阅该文档为details

+0

这可能是正确的。该文档自那时起更新。我很高兴我的解决方案能够工作,而且我不必再使用Symfony2。谢谢。也许别人可以尝试。我会把它转发给团队,他们可能会重构它。 – vik 2012-05-20 21:00:25

+0

当我问到这个问题时,这不起作用,但最好接受其他人寻找答案。 – vik 2012-06-27 22:59:57

+0

这适用于将HTML输出为实体(例如,用于复制和粘贴小部件示例)。 – Steve 2012-10-30 11:53:53

2

由于这是google搜索twig include raw值得一提的是树枝时出现的第一个结果,现在支持这个语法如下

{{ source('AcmeSomeBundle:Default:_custom_plugin_script.html.twig') }} 

然而,正如barius提到,这并不呈现模板。

+1

'源函数返回模板的内容而不呈现它' - 据我所知,这不会呈现树枝。 '| raw'不用于渲染或不渲染树枝,而是关于输出转义。 – 2015-04-28 06:41:29