定义为Service的覆盖Controller释放注入的变量

时间:2019-06-06 14:13:28

标签: service autowired overwrite symfony-3.4

在覆盖定义为服务的自动接线控制器时,我遇到了一个小问题。 目标是覆盖第三方控制器动作。我想我在某个地方松开了绑定,但是当我手动重新绑定它时,出现各种错误,告诉我我不使用绑定变量。

这是我的编译器通行证:

$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注入的服务。但是后来我不明白,在添加手动绑定时,为什么会出现错误“未使用的绑定...”

任何帮助都会很棒。

先谢谢了,
最高

0 个答案:

没有答案