Symfony:未知的“ humanize_bytes”过滤器

时间:2018-07-17 12:11:19

标签: php symfony twig

在Symfony 2.7应用程序中,我们尝试设置一个humanize_bytes Twig过滤器,以便将大量字节转换为易于理解的形式,例如10 MB

我们的HumanReadableBytesExtension.php文件中的内容如下:

public function getFilters() {
  return [
    new TwigFilter('humanize_bytes', [$this, 'getHumanReadableBytesFilter'])
  ];
}

...,并且在我们的services.yml文件中包含以下内容:

mycompany.cms.twig.extension.human_readable_bytes_extension:
  class: MyCompany\TwigExtensions\HumanReadableBytesExtension
    arguments:
      - '@translator'
    tags:
      - {name: twig.extension}

...但是我们发现没有调用getFilters()方法,并且当我们尝试在Twig模板中调用过滤器时,得到:

  

未知的“ humanize_bytes”过滤器。

两个文件均通过语法验证。缓存已清除。还有其他地方我们应该注册此过滤器吗?

====

编辑:这是app/console debug:container mycompany.cms.twig.extension.human_readable_bytes_extension命令的输出:

  

[容器]服务信息   mycompany.cms.twig.extension.human_read_bytes_extension服务ID
  mycompany.cms.twig.extension.human_read_bytes_extension类别
  MyCompany \ TwigExtensions \ HumanReadableBytesExtension标记       -twig.extension()范围容器公共是合成否惰性否   同步否抽象否

2 个答案:

答案 0 :(得分:0)

您提到您正在使用抽象类。您是否在getName中覆盖了HumanReadableBytesExtension方法?

如果两个扩展名具有相同的名称,则只会加载一个扩展名,而第二个扩展名将被静默忽略。

答案 1 :(得分:0)

我最终只是接受了所有更改并将它们放在新的功能分支上。尽管以一种非常不令人满意的方式,它“解决了”问题。 (我们从未真正弄清楚出了什么问题。)