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.ymlましたconfig_dev.yml

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

# ...

このように、アプリケーションのセットアップ プロセスでは、これらのクラスの名前に関する追加情報は必要ありません。

于 2016-01-16T08:58:06.860 に答える