我想为服务设置别名,以便能够在不同的环境中使用不同的服务。
所以,这是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.
关于我缺少什么的任何想法?
答案 0 :(得分:2)
将类名定义为参数更容易。这就是Symfony本身及其捆绑中使用的习惯用法。
答案 1 :(得分:2)
Elnur回答有效,但我决定以这种方式解决问题:
我为dev环境(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 }
# ...
这样,应用程序设置过程不需要有关这些类的额外信息。名。