Контроллер перезаписи, определенный как Сервис, теряет введенные переменные - PullRequest
0 голосов
/ 06 июня 2019

У меня небольшая проблема при переопределении автопроводного контроллера, определенного как сервис.Цель - перезаписать действие контроллера стороннего производителя.Я думаю, что где-то потеряю привязку, но когда я перепишу ее вручную, я получаю различные ошибки, говорящие мне, что я не использую связанную переменную.

Так вот мой проход компилятора:

$controllerDefinition = $container->getDefinition('PathTo\Controller\From\VendorBundle');
$controllerDefinition->setClass(MyOverwritingController::class);
$container->setDefinition('PathTo\Controller\From\VendorBundle', $controllerDefinition);

My 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.Но тогда я не понимаю, при добавлении ручного связывания, почему я получаю ошибку «Неиспользуемое связывание ...»

Любая помощь по этому вопросу будет потрясающей.

Заранее спасибо,
Макс

...