Symfony - Как установить псевдоним для службы, используя значение параметра
Я хочу установить псевдоним для службы, чтобы иметь возможность использовать разные службы в разных средах. Итак, вот services.yaml
.
.
.
register_request:
alias: %register_request_service%
main_register_request:
class: AppBundle\Services\Requests\RegisterRequest
null_register_request:
class: AppBundle\Services\Requests\NullRegisterRequest
.
.
.
и в моей среде разработки parameters.yml
похоже:
.
.
.
register_request_service: null_register_request
.
.
.
Но это не работает! когда я использую clear:cache
это говорит:
[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]
Unable to replace alias "%register_request_service%" with "register_request".
[Symfony\Component\DependencyInjection\Exception\InvalidArgumentException]
The service definition "%register_request_service%" does not exist.
Есть идеи о том, что мне не хватает?
2 ответа
Ответ Эльнура работает, но я решил решить проблему следующим образом:
Я создал файл конфигурации служб для среды разработки (services_dev.yml
) и сделал переопределение службы в нем. Итак services.yml
похоже:
# app/config/services.yml
# ...
services:
# ...
register_request:
class: AppBundle\Services\Requests\RegisterRequest
# ...
и services_dev.yml
похоже:
# app/config/services_dev.yml
services:
register_request:
class: AppBundle\Services\Requests\NullRegisterRequest
Затем я импортировал services_dev.yml
в в config_dev.yml
# app/config/config_dev.yml
imports:
- { resource: config.yml }
- { resource: services_dev.yml }
# ...
Таким образом, процесс установки приложения не требует дополнительной информации об имени этих классов.
Проще определить имя класса в качестве параметра. Эта идиома часто использовалась в самой Symfony и ее комплектах.