在覆盖定义为服务的自动接线控制器时,我遇到了一个小问题。 目标是覆盖第三方控制器动作。我想我在某个地方松开了绑定,但是当我手动重新绑定它时,出现各种错误,告诉我我不使用绑定变量。
这是我的编译器通行证:
$controllerDefinition = $container->getDefinition('PathTo\Controller\From\VendorBundle');
$controllerDefinition->setClass(MyOverwritingController::class);
$container->setDefinition('PathTo\Controller\From\VendorBundle', $controllerDefinition);
我的services.yml:
services:
_defaults:
autowire: true
autoconfigure: true
public: false
MyBundle\MyOverwritingController:
tags: ['controller.service_arguments']
# bind:
# $injectedVariable: "@anotherService"
# this results in "Unused binding "$injectedVariable" in service "MyBundle\MyOverwritingController."
最后在我的控制器中:
class MyOverwritingController extends PathTo\Controller\From\VendorBundle {
public function myAction(ClassOfMyService $injectedVariable){
//injectedVariable would be null, if set to nullable and calling
$injectVariable = $this->get('PathToService\\ClassOfMyService');
//will get the service with all its dependencies
}
}
我认为,覆盖CompilerPass中的控制器会导致我自动布线到通过$ injectedVariable注入的服务。但是后来我不明白,在添加手动绑定时,为什么会出现错误“未使用的绑定...”
任何帮助都会很棒。
先谢谢了,
最高