2012-05-03 12 views

答えて

25

サービスにコンテナパラメータを渡すことができます。b Y %your_param_name%表記を使用して:

あなたのサービスのコンストラクタメソッドでは第3引数(この例では)としての地位を提示します
services: 
    kernel.listener.locale_listener: 
     class: My\BundleName\Listener\LocaleListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 
     arguments: [ @router, @service_container, %your_param_name% ] 

:この場合には容器全体を渡す

public function __construct($router, $container, $paramValue) 
{ 
    // ... 
} 
+2

もう少し詳しい情報はありますか?私はまたサービスとしてリスナーを持っています。私のconfig.ymlには、リスナーでアクセスするいくつかの設定がありますが、それらを引数として構成する必要がありますか? –

+0

symfony 2.8以降では、これらの引数を引用符で囲む必要があります: 引数:["@router"、 "@service_container"、 "%your_param_name%"] – Naroh

-1

は解決済み:

services: 
    kernel.listener.locale_listener: 
     class: My\BundleName\Listener\LocaleListener 
     tags: 
      - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest } 
     arguments: [ @service_container ] 

リスナクラス:

class LocaleListener 
{ 
    protected $container; 

    public function __construct(\Symfony\Component\DependencyInjection\Container $container) 
    { 
     $this->container = $container; 
    } 
.. 

    public function Myfunction() 
    { 
     $languages = $this->container->getParameter('languages'); 
    } 

} 
私たちは、リスナー・サービス

MyBundleName /リソース/ services.ymlへの引数として@service_container自体を渡す必要があります

+12

は悪い考えです™ 。 –

+0

提出していただきありがとうございます。 – Amit

+0

@Ennur - なぜコンテナ全体が悪い考えですか? –

関連する問題