6

我想为服务设置一个别名,以便能够在不同的环境中使用不同的服务。所以,这里是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.

关于我缺少什么的任何想法?

4

2 回答 2

3

Elnur 回答有效,但我决定以这种方式解决问题:

我为开发环境(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.ymlinconfig_dev.yml

# app/config/config_dev.yml
imports:
    - { resource: config.yml }
    - { resource: services_dev.yml }

# ...

这样,应用程序设置过程就不需要有关这些类名称的额外信息。

于 2016-01-16T08:58:06.860 回答
2

将类名定义为参数更容易。这是 Symfony 本身及其捆绑软件中经常使用的成语。

于 2016-01-16T06:14:32.863 回答