2012-05-03 19 views
7

मेरे पास श्रोता सेवा है। मैं इसके अंदर कुछ कॉन्फ़िगरेशन पैरामीटर पढ़ना चाहता हूं।Symfony2: श्रोता के भीतर कॉन्फ़िगरेशन पैरामीटर कैसे प्राप्त करें?

श्रोता वर्ग के भीतर सेवा कंटेनर का उपयोग कैसे कर सकता हूं?

उत्तर

25

आप अपनी सेवा में कंटेनर पैरामीटर पास कर सकते हैं b y %your_param_name% अंकन का उपयोग:

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% ] 

जो के रूप में (इस उदाहरण में) आपकी सेवा के निर्माता विधि में 3 तर्क ही पेश करेंगे:

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

क्या इस पर थोड़ा और दस्तावेज है? मेरे पास एक सेवा के रूप में श्रोता भी है। मेरी config.yml में मेरे पास कुछ सेटिंग्स हैं जिन्हें मैं श्रोता में एक्सेस करना चाहता हूं, क्या मुझे उन्हें तर्क के रूप में कॉन्फ़िगर करना चाहिए? –

+0

कृपया ध्यान दें कि सिम्फनी 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

@ एलनूर - पूरे कंटेनर को एक बुरा विचार क्यों गुजर रहा है? –

संबंधित मुद्दे