如何使用Symfony在Twig中启用自动转换

时间:2014-09-04 13:55:26

标签: php symfony twig

我在Symfony项目中使用Twig。

Symfony应启用autoescape by default。但是,默认情况下它不会这样做,在我手动启用后它仍然无效。

我已将Twig配置为自动显示所有变量。

twig:
    autoescape:   true

但这不会过滤任何东西。 HTML和JavaScript都不会被转义。 没有自定义的autoescape_service,我没有使用|raw{ autoescape false }过滤变量。

我仔细检查生成的配置,以确保该值未被覆盖。 在twig服务定义下的 app / cache / dev / appDevDebugProjectContainer.xml 中,参数如下:

<argument key="debug">true</argument>
<argument key="strict_variables">false</argument>
<argument key="cache">false</argument>
<argument key="autoescape">true</argument>
<argument key="exception_controller">twig.controller.exception:showAction</argument>
<argument key="autoescape_service">null</argument>
<argument key="autoescape_service_method">null</argument>
<argument key="charset">UTF-8</argument>

还有另一种方法,Twig会覆盖我缺少的autoescape选项吗?或者我如何强制启用它?

1 个答案:

答案 0 :(得分:0)

在浪费时间试图找到解决方案之后,我总是在问我的问题后发现问题。

在开发过程中,twig.autoescape设置为false。 后来需要XSS保护。并且{{autoescape}}块已添加到某些字段中。一段时间后,在autoescape块中添加了|raw过滤器,以再次禁用某些字段的自动转换。

我错过了不必要的autoescape块中的|raw过滤器。 (我必须跳过将autoescape设置为true的内容,但稍后会应用|raw过滤器以使内容保持原始状态。