我有一个名为 Jason/JasonSticksBundle 的 Bundle,在其中我有一个名为 StickController 的控制器。
我在 Jason/JasonSticksBundle/Resources/config/services.yaml 中定义了一个服务
Jason\JasonSticksBundle\Controller\StickController:
public: true
arguments: []
tags: ['controller.service_arguments']
我的 services.yaml 是通过 JasonSticksExtension->load() 加载的,我的 bundle 在 bundles.php 中注册。
该捆绑包按原样工作。
但
对于这个特定的项目,我想覆盖 StickController 中的一些方法,所以我试图“装饰”它。
因此,在我的常规 services.yaml 的底部,我有以下内容:
App\Controller\StickController:
decorates: Jason\JasonSticksBundle\Controller\StickController
但我得到这个错误
您请求了一个不存在的服务“Jason\JasonSticksBundle\Controller\StickController”。
最后,如果我跑
php bin/console debug:container
我可以看到我的服务
Jason\JasonSticksBundle\Controller\StickController Jason\JasonSticksBundle\Controller\StickController
我所能想象的是,我的 services.yaml 是在我的 StickBundle 注册之前注册的,因此它在正确的时间不存在。但我不知道如何改变这个顺序,或者这是否是一个可行的选择?
任何帮助表示赞赏。