У меня проблема с Symfony автопроводкой. Мне нужно заменить один из сторонних сервисов своим собственным. Сервис изначально определен так:
ewz_recaptcha.form.type:
class: EWZ\Bundle\RecaptchaBundle\Form\Type\EWZRecaptchaType
public: true
arguments:
- '%ewz_recaptcha.public_key%'
- '%ewz_recaptcha.enabled%'
- '%ewz_recaptcha.ajax%'
- '@ewz_recaptcha.locale.resolver'
- '%ewz_recaptcha.api_host%'
tags:
- { name: form.type }
Мое определение выглядит аналогично:
ewz_recaptcha.form.type:
class: App\Form\Type\EWZRecaptchaType
public: true
arguments:
- ''
- false
- '%ewz_recaptcha.ajax%'
- '@ewz_recaptcha.locale.resolver'
- '%ewz_recaptcha.api_host%'
tags:
- { name: form.type }
Я игнорирую первые 2 параметра, поскольку они загружаются позже из базы данных (это изменение, которое я сделал в сервисе).
Теперь это работает нормально, если я помещу его в config/services.yaml
Но так как в этом проекте я использую этот файл только для сервисов проекта, и все перезаписи, которые я помещаю в сторонние конфигурационные файлы, я попытался чтобы переместить его в config/packages/ewz_recaptcha.yaml
Но теперь я получаю сообщение об ошибке:
Cannot autowire service "App\Form\Type\EWZRecaptchaType": argument "$publicKey" of method "EWZ\Bundle\RecaptchaBundle\Form\Type\EWZRecaptchaType::__construct()" has no type-hint, you should configure its value explicitly.
Я даже подключился к Symfony\Component\DependencyInjection\Compiler\AutowirePass
, чтобы проверить, что происходит, и когда определено в services.yaml
параметр $arguments
заполнен моими аргументами, но при перемещении в ewz_recaptcha.yaml
массив аргументов пуст.
Есть ли другой способ определения аргументов, когда служба определена вне файла services.yaml?