2012-07-16 11 views
12

मैं पेज लोड में भी मार्ग कैसे प्राप्त कर सकता हूं श्रोता?सिम्फनी 2: पेज लोड इवेंट श्रोता में रूट प्राप्त करना

मैं services.yml में निम्न कोड:

page_load_listener: 
    class: Acme\MainBundle\EventListener\PageLoadListener 
    arguments: [@security.context, @session] 
    tags: 
     - { name: kernel.event_listener, event: kernel.controller, method: onKernelController, priority: 64 } 

PageLoadListener वर्ग में मैं इसी विधि है:

public function onKernelController(FilterControllerEvent $event) 
    { 

     // Some code I need to execute that needs the route arguments 

    } 

समस्या हो कि मार्ग और तर्क नहीं हैं लगता है उपलब्ध। मैं क्या खो रहा हूँ?

मुझे कौन सा कार्यक्रम मार्ग और इसके तर्क लेने के लिए पास करने की आवश्यकता होगी?

धन्यवाद,

जेबी

उत्तर

30

सभी गिरी घटनाओं का विस्तार KernelEvent, जिसका अर्थ है आप बस $event->getRequest() के माध्यम से Request वस्तु पर पहुंच सकते।

public function onKernelController(FilterControllerEvent $event) 
{ 
    $request = $event->getRequest(); 

    // Matched route 
    $_route = $request->attributes->get('_route'); 

    // Matched controller 
    $_controller = $request->attributes->get('_controller'); 

    // All route parameters including the `_controller` 
    $params  = $request->attributes->get('_route_params'); 
} 

आप सादे मार्ग गुण प्राप्त करना चाहते हैं, तो बस सभी तत्वों "_" के साथ उपसर्ग को फ़िल्टर।

सुनने के लिए उचित घटना का चयन करना आपके विशिष्ट उपयोग मामले पर निर्भर करता है।

+0

यह टिकट है, @ गिल्डन। _route और _controller आबादी वाले हैं, केवल एक चीज जो रिक्त है _route_params विशेषता है, हालांकि अनुरोध ऑब्जेक्ट के पैरामीटर बैग में रूट पैरामीटर शामिल है। मुझे इसे विशेष रूप से पूछना होगा, लेकिन यह काम करेगा। क्या आपको पता चलेगा कि _route_params क्यों मौजूद नहीं होंगे? – jbsound

+0

मैं _route_params के संदर्भ देख रहा हूं जिसे सिम्फनी 2.1 में पेश किया गया है, जो अभी भी बीटा में दिख रहा है। मैं स्थिर 2.0.15 का उपयोग कर रहा हूं, इसलिए मैं इसके आसपास काम करूंगा। मुझे सही दिशा में इंगित करने के लिए धन्यवाद, @ गिल्डन। – jbsound

+0

@jbsound क्षमा करें, मैं भूल रहा हूं कि मैं 2.1 का उपयोग कर रहा हूं। * एक प्रोजेक्ट के लिए। आप 'var_dump'-ing' $ request-> विशेषताओं-> सभी() '- गुणों को 2.0 के लिए पैरामीटर बैग में होना चाहिए। * साथ ही। – gilden

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