मुझे पता है कि मैगेंटो में एक हुक जैसी प्रणाली है, जिसे ईवेंट कहा जाता है। क्या किसी के पास एक पूरी सूची या एक स्क्रिप्ट है जिसका उपयोग यह निर्धारित करने के लिए किया जा सकता है कि कौन सी घटनाओं को कहा जा सकता है?
मुझे पता है कि मैगेंटो में एक हुक जैसी प्रणाली है, जिसे ईवेंट कहा जाता है। क्या किसी के पास एक पूरी सूची या एक स्क्रिप्ट है जिसका उपयोग यह निर्धारित करने के लिए किया जा सकता है कि कौन सी घटनाओं को कहा जा सकता है?
जवाबों:
सभी Magento की घटनाओं की एक सूची नहीं है, क्योंकि अधिकांश घटनाओं को गतिशील रूप से नाम दिया गया है।
यदि आप मुझसे पूछें, तो इन प्रमुख घटनाओं (और परिणामों) को जानना एक अच्छा प्रारंभिक बिंदु है (निक से सूची के बगल में):
Mage_Core_Model_Abstract से विस्तारित प्रत्येक वस्तु लोडिंग, बचत और हटाने के आसपास बहुत सी घटनाओं को भेजती है:
app/code/core/Mage/Core/Model/Abstract.php:255
Mage::dispatchEvent($this->_eventPrefix.'_load_before', $params);
// e.g. sales_order_load_before, checkout_cart_load_before
उदाहरण के लिए, चेक को जोड़ने के लिए, वस्तु लोड होने के बाद
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
सहेजे जाने से पहले ऑब्जेक्ट में अतिरिक्त डेटा जोड़ना
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
"माता-पिता" को बचाने के बाद अन्य मॉडलों को बचाने के लिए
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
मॉडल को हटाने से पहले सफाई करें
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
मॉडल को हटाने से पहले सफाई करें - या शायद बाद में? आप यहाँ अभी भी लेन-देन में हैं!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
यदि आप सुनिश्चित करना चाहते हैं कि इकाई हटा दी गई है
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
Mage_Core_Model_Resource_Db_Collection_Abstract से विस्तारित संग्रह में दो सामान्य घटनाएं भी हैं:
उदाहरण के लिए: संग्रह को लोड करने के लिए SQL को बदलना:
app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:588
Mage::dispatchEvent($this->_eventPrefix.'_load_before', array(
$this->_eventObject => $this
));
// e.g. sales_order_status_history_collection_load_before
उदाहरण के लिए: ऑब्जेक्ट में अतिरिक्त डेटा जोड़ने के लिए:
app/code/core/Mage/Core/Model/Resource/Db/Collection/Abstract.php:637
Mage::dispatchEvent($this->_eventPrefix.'_load_after', array(
$this->_eventObject => $this
));
// e.g. sales_order_shipment_collection_load_after
_eventPrefix
मॉडल की घटनाओं के लिए, लक्षित अनुरोध घटनाओं, कभी कभी-उपयोगी सामान्य ब्लॉक घटनाओं, और घटनाओं को खोजने के लिए प्रवेश के महत्व
app/code/core/Mage/Core/Model/App.php
और mage::log($eventName,null,'events.txt',true);
करने के लिए dispatchEvent
विधि। वह पृष्ठ लोड करें जिसका मैं अवलोकन करने का प्रयास कर रहा हूं। स्पष्ट रूप से इसे वैसा न छोड़ें जैसा कि आपके var / लॉग / event.txt के बन जाने के बाद वापस मिलता है। गंदा, हाँ। जल्दी, हाँ। :)
खूनी करें grep 'Mage::dispatchEvent' app/ -rsn
यह आपको आपकी स्थापना के लिए विशिष्ट घटनाओं की एक सूची प्रदान करेगा क्योंकि घटनाओं की सूची Magento के संस्करण, अनुकूलन और स्थापित एक्सटेंशन के आधार पर भिन्न हो सकती है।
sales_order_place_after
ऐसा होगा, लेकिन ऐसा लगता है कि आग लगने की कॉल के बारे में टिप्पणी की गई है Checkout/Type/Onepage.php
।
मैं इसे एक अच्छा धोखा पत्र के रूप में उपयोग करता हूं http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ । इसमें सभी घटनाएँ हैं जिन्हें 1.7 में बुलाया जा सकता है।
मुझे पता है कि इस सवाल का जवाब दिया गया है, मैं यहाँ अपना रास्ता जोड़ता हूँ:
public static function dispatchEvent
(ln: ~ 446) भीख मांगने के काम में
//Mage::log($name, null, 'events.log', true);
फिर आप var / log / event.log (~ 40kb) खोलें और उस पेज पर पूरी बहुत सारी घटनाओं को देखें! :)
उत्तर को पहले ही स्वीकार कर लिया गया है, लेकिन बीमार भविष्य के लिए वैसे भी मेरा उत्तर दे सकते हैं:
यदि आप उन घटनाओं की सूची देखना चाहते हैं जो Magento के पास आपके पास 3 विकल्प हैं:
1) Google इसके लिए, बहुत सारे लोग हैं जिन्होंने Magento की घटनाओं की एक सूची तैयार की है
2) एक मॉड्यूल बनाएं controller_action_predispatch
जो उस घटना पर हुक करता है जो वह घटना है जिसे किसी अन्य घटना से पहले बुलाया जाता है। इस मॉड्यूल के अंदर आप कुछ ईवेंट भेज सकते हैं जो भेजे गए हैं:
Config.xml पर निम्न जोड़ें
<events>
<controller_action_postdispatch>
<observers>
<controller_action_after>
<class>yourmodule/observer</class>
<method>hookToControllerActionPostDispatch</method>
</controller_action_after>
</observers>
</controller_action_postdispatch>
</events>
और आपके अंदर / मॉडल / प्रेक्षक:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
ऊपर भेजे जाने वाले प्रत्येक ईवेंट को लॉग करेगा ...
3) यदि आपके पास SSH का उपयोग है, तो आप सभी घटनाओं का अवलोकन प्राप्त करने के लिए निम्न कमांड को चला सकते हैं (और उनकी फाइलें जहाँ वे भेजे जाते हैं):
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
, विशेष रूप से निकाल दिया गया है controller_front_init_before
। 2) यह दृष्टिकोण बस प्रेषण की गई हर घटना को लॉग नहीं करेगा , क्या यह एक टाइपो या अपूर्ण अनुभाग है?
मैं Magento डेवलपर टूलबार का उपयोग कर रहा हूं जिसमें उन घटनाओं को प्रदर्शित करने की अच्छी सुविधा है जो लोड किए गए पृष्ठ पर देखे जा सकते हैं।
यहां आप मौजूदा घटनाओं में से अधिकांश देख सकते हैं: http://www.magentocommerce.com/wiki/5_-_odod_and_development/reference/magento_events
मैंने Magento के कोर मैज मॉड्यूल पर एक grep किया है, और एक सूची का अनुपालन किया है,
Magento की घटनाओं की व्यापक सूची
PS जैसा कि बताया गया है, ऐसी घटनाएँ हो सकती हैं जो Magento के पदावनत कार्यों के अंदर हैं, इसलिए कार्यान्वयन से पहले फ़ाइल और लाइन संदर्भ की जाँच करें।
सुझाव के लिए खोलें!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
पिछले सूचीबद्ध grep कमांड डुप्लिकेट (बहुत) रेंडर करेगा और यह घटना उपसर्गों की सूची को कवर नहीं करता है जिन्हें गतिशील रूप से उत्पन्न इवेंट नामों को समझने के लिए आवश्यक होगा। ये आदेश केवल अनन्य मानों के साथ दोनों सूचियों को प्रस्तुत करते हैं। आप अन्य grep उत्तर की तरह एन-फ्लैग जोड़ सकते हैं और मुझे लगता है कि लाइन नंबर प्राप्त कर सकते हैं। लेकिन सवाल यह नहीं पूछा कि कोड में वे सब कहाँ थे। ~ _ ~
यहाँ एक धोखा शीट भी मिलती है http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
यहां आप प्रेक्षक घटनाओं की पूरी सूची पा सकते हैं।
इन चीट शीट्स को देखें
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
यह आपके लिए उपयोगी होगा।
आप सिंगल लिंक पर बैकएंड + फ्रंटएंड घटनाओं की सभी सूची पा सकते हैं
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
यदि किसी को कभी भी अद्यतन सूची की आवश्यकता होती है, तो मैं इसे अद्यतित रखने का प्रयास कर रहा हूं:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
आप url का अनुसरण करके सभी magento-1x ईवेंट पा सकते हैं। https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference