弃用枝条过滤器,改为使用Twig_SimpleFilter

时间:2015-11-24 10:21:14

标签: php symfony twig

我使用Symfony 2.3并在与Twig相关的探查器中发布了弃用警告。如:

DEPRECATION - Using "replace" with character by character replacement is deprecated 
and will be removed in Twig 2.0

|replace标签似乎仍然是Twig文档的一部分,所以我对如何处理此警告感到有些困惑。

此外,我从我使用的第三方软件包中获得了类似的弃用警告。

  • 有没有一种简单的方法可以解决这个问题?
  • 如果我从2.3升级到2.7,这会成为一个问题吗?

2 个答案:

答案 0 :(得分:7)

您需要更改传递参数以更换twig中的函数的方式:

  • 之前:{{str |替换('a','b')}}
  • 现在:{{str |替换({'a':'b'})}}

在它是两个参数之前,现在它是一个数组。

你可以在代码源中检查它不是替换的twig_replace_filter函数,但是只有一种方法是调用它:https://github.com/twigphp/Twig/blob/1.x/lib/Twig/Extension/Core.php#L534

请注意,twig doc显示正确的示例: http://twig.sensiolabs.org/doc/filters/replace.html

答案 1 :(得分:0)

事实上,修复它的唯一方法是替换所有已弃用的函数。

但是,只有通过以下方式升级你的树枝束时,这才会引起麻烦:

  • 如果您的composer.json中的标记不是版本(例如"twig/extensions": "1.*",

  • ,则会更新作曲家
  • 如果您使用需要twig 2.x的版本升级symfony

事实上,如果您使用此版本,您的项目将不会受到此警告的影响。