2011-06-20 11 views
5

प्रेषण प्रक्रिया में जितनी जल्दी हो सके, मुझे एक घटना को आग लगाना होगा, जब कोई ग्राहक फ्रंटएंड नियंत्रक का दौरा करता है। अनुरोध का विश्लेषण किया जाना चाहिए और संभावित रूप से "जितनी जल्दी संभव हो सके" आवश्यकता को उचित ठहराने के लिए, एक अलग यूआरएल पर रीडायरेक्ट किया जाएगा।Magento प्रेषण की सबसे पुरानी घटना क्या है?

डेवलपर की सदस्यता लेने वाली सबसे पुरानी घटना क्या है?

उत्तर

20

जल्द से जल्द घटना पर मैं भरोसा था

controller_front_init_before 

Magento सामने नियंत्रक वस्तु ("index.php सामने नियंत्रक" से अलग) वस्तु है कि प्रबंधकों राउटर, जो बारी में प्रबंध करती है कार्रवाई नियंत्रक प्रेषण।

वहाँ कुछ अन्य लोगों (resource_get_tablename, core_collection_abstract_load_before, core_collection_abstract_load_after) है कि आग से पहले है, लेकिन वे पक्ष प्रभाव विभिन्न प्रकार के और अधिक कर रहे हैं (Magento का उपयोग कर यह अपने आप bootstrap करने के लिए स्वयं की प्रणालियों है) कुछ भी आप पर भरोसा करते हैं करना चाहते हैं की तुलना में।

अंत में, हमेशा की तरह, कहा जाना चाहिए अगर आप app/Mage.php

public static function dispatchEvent($name, array $data = array()) 
{ 
    file_put_contents('/tmp/events.log',"$name \n",FILE_APPEND); 
    Varien_Profiler::start('DISPATCH EVENT:'.$name); 
    $result = self::app()->dispatchEvent($name, $data); 
    #$result = self::registry('events')->dispatch($name, $data); 
    Varien_Profiler::stop('DISPATCH EVENT:'.$name); 
    return $result; 
} 

पैटर्न में एक छोटे से प्रवेश कर उभरने के लिए शुरू करते हैं।

+0

मुझे लगता है कि रूटिंग परत {पूर्ण पृष्ठ, ब्लॉक} स्तर कैशिंग द्वारा अप्रभावित है? मेरे पास एंटरप्राइज़ इंस्टॉलेशन तक पहुंच नहीं है, अन्यथा मैं अपने पूरे पृष्ठ का परीक्षण करूंगा। – Nick

+0

@ निक मैं उस धारणा को नहीं बनाऊंगा। जब एफपीसी (या लाइटस्पीड या इसी तरह) सक्षम होता है, तो मैगे नियंत्रक कभी हिट नहीं होता है, इसलिए कभी भी ईवेंट नहीं फेंकता है। रेफरी: http://stackoverflow.com/q/4735354/336905 - यदि आपको आवश्यकता हो तो मैं ईई टेस्टबेड तक पहुंच के साथ मदद कर सकता हूं।नियंत्रक अभी भी कॉल होने के बाद से ब्लॉक कैशिंग अलग है। –

+0

@ निक: पूर्ण पृष्ठ कैश से बाहर आने वाला एक मज़े उस घटना को नहीं रोकेगा। किसी भी रूटिंग के पहले, पूर्ण पृष्ठ कैश कोर/ऐप मॉडल की रन विधि में होता है। –

3

आप शायद controller_action_predispatch ईवेंट की तलाश में हैं।

इससे पहले अन्य घटनाओं का एक गुच्छा निकाल दिया गया है, लेकिन इस मामले में मुझे लगता है कि आप अभी भी प्रेषित कार्रवाई नियंत्रक तक पहुंच बनाना चाहते हैं।

यदि आप इसे पहले भी चाहते हैं, तो आपकी सर्वश्रेष्ठ शर्त controller_front_init_before होगी, जिसे फ्रंट नियंत्रक प्रारंभ करने से पहले निकाल दिया जाता है।

2

यहाँ वहाँ भी controller_action_predispatch और controller_action_postdispatch से प्रत्येक के लिए एक घटना है एक और 1.5.1.0

Magento 1.4.1.1 में घटनाओं की सूची है। पता करने के लिए जो कार्य आप ऐसा ही एक लाइन एक ही फाइल में postDispatch समारोह में जोड़ा जा सकता app/code/core/Mage/Core/Controller/Varien/Action.php

की preDispatch समारोह में निम्न पंक्ति

जोड़ सकते हैं बुलाया जा रहा है।

+3

ओपी के ब्लॉग पोस्ट की सहायता से उत्तर दिया। इसके लिए कोई बैज क्यों नहीं है? :) – Nick

+0

मेरा बुरा। ओपी पर केवल पर्याप्त प्रश्न नहीं किया;), लेकिन उत्तर का दूसरा भाग आपके किसी भी ब्लॉग पोस्ट से नहीं है। –

1

कुछ यह sluething के बाद लगता है कि - के Magento ईई पूर्ण पृष्ठ शर्तों कैश में सक्षम किया जा रहा है - केवल विश्वसनीय घटना आप के लिए सुन सकते हैं http_response_send_before है।

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