【发布时间】:2021-02-26 15:27:44
【问题描述】:
我正在尝试覆盖 Symfony 5.2 中的翻译器类。我试过这个:
# config/services.yaml
services:
# ....
App\Translator:
decorates: translator
还有这个(App\Translator 实现 TranslatorInterface):
# config/services.yaml
services:
# ....
App\Translator:
arguments:
$translator: '@translator'
Symfony\Contracts\Translation\TranslatorInterface: '@App\Translator'
这两种方法在 PHP 代码中都运行良好,但是在 twig 的开发模式下,翻译服务仍然是 DataCollectorTranslator。所以在树枝模板中,翻译服务仍然没有被覆盖。我该如何解决?
【问题讨论】:
-
根据您发布的代码,您在 services.yaml 中定义了两个 App\Translator 服务?第二个定义将覆盖第一个。您应该只有第一个负责将原始翻译器注入您的装饰器服务。此外,已经定义了一个 TranslatorInterface 别名,所以我认为您不需要定义一个。
-
不,这是创建装饰器的两种不同尝试。在这两种情况下,在开发模式下的 twig 模板中,翻译服务仍然没有被覆盖(仍然是 DataCollectorTranslator)。
标签: symfony