2012-06-30 21 views
8

मैंने "नाम: kernel.event_listener, event: kernel.request" के लिए 2 ईवेंट श्रोताओं को परिभाषित किया है, लेकिन मैं जो भी चाहता हूं वह कर सकता हूं, मैं कॉल करने का क्रम नहीं बदल सकता यह श्रोता मैं "प्राथमिकता" संख्या का उपयोग करने की कोशिश करता हूं, लेकिन कुछ भी मदद नहीं करता है।सिम्फनी 2 में ईवेंट हैंडलर प्राथमिकता को कैसे बदलें

इस घटना को हमेशा @first बुला रहा है:

MyBundle.Foo.Listener.RequestListener: 
    class: %MyBundle.Foo.Listener.request.class% 
    arguments: [ @session, @liip_theme.active_theme, @Need.some.infos.service ] 
    tags: 
     - { name: kernel.event_listener, event: kernel.request, method: onRequest, priority: 100 } 

और इस घटना बुला रहा है कभी नहीं, क्योंकि पहली घटना एक सेवा है जो इस घटना का एक जानकारी पर निर्भर करता है का उपयोग करें, तो इससे पहले कि इस घटना शुरू हो रहा है यह दुर्घटनाओं :

MyBundle.Bar.Listener.RequestListener: 
    class: %MyBundle.Bar.Listener.request.class% 
    arguments: [ @session ] 
    tags: 
     - { name: kernel.event_listener, event: kernel.request, method: onRequest, priority: 200 } 

मैं "प्राथमिकता" बहुत बदल गया है, लेकिन कुछ भी :(बदल

हो सकता है कि किसी ने मेरे लिए एक टिप है कि मुझे लगता है कि श्रोता "सुनिश्चित करने के लिए कर सकते हैं MyBundl e.Bar.Listener.RequestListener "अन्य घटना से पहले कॉल करेंगे?

उत्तर

8

समस्या यह है कि इवेंट श्रोता वर्ग किसी भी घटना ट्रिगर्स से पहले सिम्फनी स्टार्ट में प्रवेश करेगा।

मैं अपने डि को बदलना पड़ा:

MyBundle.Foo.Listener.RequestListener: 
    class: %MyBundle.Foo.Listener.request.class% 
    arguments: [ @session, @liip_theme.active_theme, @service_container ] 
    tags: 
     - { name: kernel.event_listener, event: kernel.request, method: onRequest, priority: 0 } 

मैं इस "@service_container" सेवा का उपयोग किया घटना अंदर "@ Need.some.infos.service" लक्ष्य सेवा, और कॉल और सभी ठीक काम करता है ।

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

  • कोई संबंधित समस्या नहीं^_^