У меня небольшая проблема при переопределении автопроводного контроллера, определенного как сервис.Цель - перезаписать действие контроллера стороннего производителя.Я думаю, что где-то потеряю привязку, но когда я перепишу ее вручную, я получаю различные ошибки, говорящие мне, что я не использую связанную переменную.
Так вот мой проход компилятора:
$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.Но тогда я не понимаю, при добавлении ручного связывания, почему я получаю ошибку «Неиспользуемое связывание ...»
Любая помощь по этому вопросу будет потрясающей.
Заранее спасибо,
Макс