来自捆绑包的自定义 Twig 过滤器:无法加载运行时

Custom Twig filter from bundle: Unable to load the runtime

我在 https://symfony.com/doc/current/templating/twig_extension.html 之后创建的项目中有一个小的 twig 自定义过滤器。只要它位于 src/Twig,它就会按预期工作。

现在我正尝试将其移至自定义包 (vendor/turbolabit/tli-base-bundle/src/Twig/) 以使其可重复使用。

我移动了两个文件:

<?php
namespace TurboLabIt\TLIBaseBundle\Twig;

use App\Twig\AppRuntime;
use Twig\Extension\AbstractExtension;
use Twig\TwigFilter;

class TrimmerExtension extends AbstractExtension
{
    public function getFilters()
    {
        return [
            new TwigFilter('trimmer', [TrimmerExtensionRuntime::class, 'trim']),
        ];
    }
}
<?php
namespace TurboLabIt\TLIBaseBundle\Twig;

use Twig\Extension\RuntimeExtensionInterface;


class TrimmerExtensionRuntime implements RuntimeExtensionInterface
{
    public function trim(string $value): string
    {
        return trim($value);
    }
}

我在 services.yaml 中标记了它:

TurboLabIt\TLIBaseBundle\Twig\TrimmerExtension:
    tags: [twig.runtime]

(我也试过 tags: [twig.extension],即使它是不正确的,因为这是一个延迟加载的过滤器,但它没有区别)

我在symfony console debug:twig --filter=trimmer看到了:

Filters
-------

 * trimmer

但是当我尝试使用它时(就像我以前那样):

 <div>{% apply trimmer %}      this must be trimmed              {% endapply %}</div>

它爆炸了:

无法加载“TurboLabIt\TLIBaseBundle\Twig\TrimmerExtensionRuntime”运行时。

我错过了什么?

很难从文档中准确理解应该如何配置。按照我的理解,TrimmerExtension 应该被标记为 extension and/or TrimmerExtensionRuntime 应该被标记为 runtime

TurboLabIt\TLIBaseBundle\Twig\TrimmerExtension:
    tags: [twig.extension]

TurboLabIt\TLIBaseBundle\Twig\TrimmerExtensionRuntime:
    tags: [twig.runtime]