2017-12-13 9 views
0

私のSymfonyプロジェクトでは、私は2つのインターフェースを注入したマネージャーを持っています。Symfonyサービス。登録時に引数を渡す方法は?

class ActionLogsManager 
{ 
    private $entityManager; 
    private $container; 
    private $token; 

public function __construct(EntityManager $manager, ContainerInterface 
    $container, TokenInterface $token) 
    { 
     $this->entityManager = $manager; 
     $this->container = $container; 
     $this->token = $token; 
    } 
} 

私はservices.ymlで、このマネージャを登録したいのですが、私はパラメータが(これの正しい構文を知らない)として、これらのインターフェイスを渡す方法を知らない

services: 
    managers.action_log_manager: 
      class: MyBundle\Managers\ActionLogsManager 
      arguments: ['@doctrine.orm.entity_manager', ?, ?] 
+1

それはこの場合、すべてのコンテナ –

+1

を注入するABDのアイデアをね、マネージャにコンテナを使用する別の方法があります:次のように

あなたservices.ymlが見えるだろうか? –

+1

あなたは必要なものだけをコンテナに渡すことはありません。コンテナが大きすぎます –

答えて

2

TokenInterfaceの代わりにTokenStorageInterfaceを使用してください。これらのサービスの別名は@service_container@security.token_storageです。

services: 
    managers.action_log_manager: 
      class: MyBundle\Managers\ActionLogsManager 
      arguments: ['@doctrine.orm.entity_manager', '@service_container', '@security.token_storage'] 
+0

あなたの答えをありがとう) –

1

それは非常に簡単です。コンソールコマンドを使用して見つけることができます。

bin/console debug:container 

左側の列 - サービスID、右側 - クラス名。 例を参照してくださいscreenshot

関連する問題