Magento 2 घटनाओं की सूची


16

क्या Magento 2 में घटनाओं की कोई पूरी सूची है? मैं Magento घटनाक्रम धोखा शीट (1.9) की तरह कुछ के लिए देख रहा हूँ


यहाँ घटना की सूची है जिसे आपने magento2 में सभी घटनाएँ मिली हैं advancedcheckout.com/blog/list-event-magento2.html
जितेन्द्र

जवाबों:


18

मैं एक साथ Magento 2 घटनाओं की एक सूची का उपयोग कर डाल दिया

find . -type f -exec grep -n -H -A 2 -T "eventManager->dispatch(" {} \;

सूची को 2 भागों में विभाजित किया गया है, एक स्थैतिक घटनाओं के लिए और एक गतिशीलता के लिए।

से यहाँ , स्थिर घटनाओं उन सभी घटनाओं की तरह पूर्ण घटना नाम के साथ निर्धारित होते हैं:

$this->_eventManager->dispatch('some_event');

गतिशील घटनाएँ उन सभी घटनाओं को गतिशील रूप से परिभाषित किया जाता है, क्रम में, जैसे कि घटना का नाम:

$this->_eventManager->dispatch($this->_eventPrefix . '_load_before', $params);

बेहतर पढ़ने के लिए सूची एक स्प्रेडशीट में है। मैंने घटना के संदर्भ की बेहतर समझ के लिए मैच के बाद 2 लाइनें छोड़ दीं।

एक ही सूची में खोज पाया जा सकता है सरकारी Magento 2 रेपो के लिए_eventManager->dispatch


सूची बहुत उपयोगी है लेकिन यह अधूरी लगती है। sales_order_save_afterउदाहरण के लिए घटना , जो मेरे वर्तमान कार्य के लिए बहुत महत्वपूर्ण है, गायब है और जब आप Magento 2 रेपो के माध्यम से खोजते हैं, तो आप देखेंगे कि इसके लिए बिल्कुल भी नहीं dispatchहै: github.com/magento/magento2// मुझे अभी तक कोई पता नहीं है इन घटनाओं को कैसे भेजा जाता है, लेकिन इन्हें सूची में शामिल करना बहुत अच्छा होगा!
Jey DWork

आपको कैसे पता चलेगा कि इसका ईवेंट नाम मौजूद नहीं है? हो सकता है कि आप किसी अन्य नाम के साथ Magento 2 में एक समान खोज रहे हों?
मुलपर्धा

यकीन नहीं होता अगर हम उसी चीज के बारे में बात कर रहे हैं। मैं बस सोच रहा था कि घटना sales_order_save_after(सिर्फ एक उदाहरण के रूप में) सूची में नहीं आती है (और खोज) यह भी एक गतिशील घटना की तरह नहीं दिखता है। और फिर मैं सोच रहा था कि क्या और कैसे इस तरह की घटनाओं को और अधिक पूर्ण सूची में शामिल करना संभव हो सकता है। और जाहिर है कि मैं केवल Magento 2 के बारे में बात कर रहा हूँ sales_order_save_afterएक Magento 2 घटना है, जहाँ तक मैं बता सकता हूँ।
जेई डीडॉर्क

14

जाहिर है, एक अच्छा अभ्यास नहीं है, लेकिन मैं एक लिंक प्रदान कर रहा हूं जिसने Magento2 में महत्वपूर्ण घटनाओं का अनुपालन किया है

http://cyrillschumacher.com/magento2-list-of-all-dispatched-events/

बेशक घटनाओं की सूची अधूरी है, जैसे कि यदि आपने Magento 1.x के साथ काम किया है, तो घटनाओं को तर्क से हटा दिया जाता है

  1. lib/internal/Magento/Framework/Model/AbstractModel.php एक मॉडल की घटनाओं से पहले और बाद में लोड करें

    $this->_eventManager->dispatch($this->_eventPrefix . '_load_before', $params);
    $this->_eventManager->dispatch($this->_eventPrefix . '_load_after', $params);

    मॉडल ऑब्जेक्ट की घटनाओं से पहले और बाद में सहेजें

    $this->_eventManager->dispatch($this->_eventPrefix . '_save_before', $this->_getEventData());
    $this->_eventManager->dispatch($this->_eventPrefix . '_save_after', $this->_getEventData());

    किसी वस्तु को हटाना

    $this->_eventManager->dispatch($this->_eventPrefix . '_delete_before', $this->_getEventData());
    $this->_eventManager->dispatch($this->_eventPrefix . '_delete_after', $this->_getEventData());

    किसी वस्तु को साफ करना

    $this->_eventManager->dispatch($this->_eventPrefix . '_clear', $this->_getEventData());
  2. नियंत्रक प्रेषण

    lib / आंतरिक / Magento / फ्रेमवर्क / अनुप्रयोग / क्रिया / Action.php

    $this->_eventManager->dispatch(
        'controller_action_predispatch_' . $request->getFullActionName(),
        $eventParameters
    );
    
    eg // controller_action_predispatch_checkout_cart_index
    
    
    $this->_eventManager->dispatch(
        'controller_action_postdispatch_' . $request->getFullActionName(),
        $eventParameters
    );
    eg // controller_action_postdispatch_checkout_cart_index
  3. फ्रंटेंड लेआउट घटनाओं को प्रस्तुत करना

    $this->_eventManager->dispatch(
        'controller_action_layout_render_before_' . $this->_request->getFullActionName()
    );
  4. मॉडल के संग्रह

    lib / आंतरिक / Magento / फ्रेमवर्क / मॉडल / ResourceModel / DB / संग्रह / AbstractCollection.php

    $this->_eventManager->dispatch($this->_eventPrefix . '_load_before', [$this->_eventObject => $this]);
    
    $this->_eventManager->dispatch($this->_eventPrefix . '_load_after', [$this->_eventObject => $this]);

ऐसी कई घटनाएं हैं, और यह Magento2 में स्पष्ट रूप से और अंतर्निहित रूप से उत्पन्न घटनाओं का एक संयोजन है


अच्छी चीज़! हमें एक जगह पर सब कुछ करने के लिए अपने उत्तरों को मर्ज करना चाहिए। तुम क्या सोचते हो?
मंगलपर्व


1

ऊपर दिए गए उत्तर सभी काम करते हैं, लेकिन कभी-कभी आपको यह जानने की आवश्यकता होती है कि किसी विशिष्ट पृष्ठ लोड पर कौन सी घटनाओं को फेंक दिया जाता है और उन्हें किस क्रम में फेंक दिया जाता है।

तो यहाँ सबसे अच्छा तरीका है (यह जानने के लिए मेरी राय में), xDebug का उपयोग करें और कक्षा में लाइन 56 पर एक ब्रेक पॉइंट सेट करें Magento\Framework\Event\Manager(यह libफ़ोल्डर में फ़ोल्डर नहीं है app)।

अपने डिबगर में सिर्फ करने के लिए कह "का मूल्यांकन करें और लॉग इन करें"$eventName चर और घड़ी के सभी घटनाओं कंसोल पर दिखाना के रूप में आप पृष्ठ लोड।

मैं "सस्पेंड" विकल्प को अक्षम करने की भी सिफारिश करूंगा क्योंकि फेंकी गई घटनाओं में से सौ हो सकती हैं, आपको पहले ब्रेकप्वाइंट पर हिट होने के लिए इसे छोड़ने की आवश्यकता हो सकती है और फिर आप इसे हटा सकते हैं।

घटना का नाम विराम बिंदु मुझे लगता है कि पृष्ठ लोड पर भेजे गए सभी ईवेंट को प्राप्त करने का यह सबसे अच्छा तरीका है क्योंकि यह आपको उन सभी घटनाओं को भी दिखाएगा जो नियंत्रकों द्वारा भेजी जाती हैं। प्रत्येक नियंत्रक पहले और बाद में FullActionName, RouteName और डिफ़ॉल्ट पोस्टडिस्पैक्ट वाले नामों के साथ घटनाओं को भेजता है। प्रेषण () पद्धति के Framework\App\Actionतहत कक्षा देखें ।


0

इसकी मुश्किल घटना एक विशेष पृष्ठ में पता करने के लिए मिलता है। इसलिए आप इस कोड को कॉल करने की घटनाओं को ट्रैक करने की कोशिश कर सकते हैं और अपनी आवश्यकताओं के लिए सबसे अच्छा उपयोग कर सकते हैं

/vendor/magento/framework/Event/Manager.php

ईवेंट नाम के नीचे यह कोड जोड़ें

$eventName = mb_strtolower($eventName);

// Code to log all events start
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$dirList = $objectManager->get('\Magento\Framework\App\Filesystem\DirectoryList');
$logPathName = $dirList->getPath('var') . '/log/events.log';
$eventLogFile = fopen($logPathName, 'a');
fwrite($eventLogFile, $eventName . ' => ' . implode(', ', array_keys($data)) . "\n");
fclose($eventLogFile);
// Code to log all events ends

आप देख सकते हैं सूची में<magentoroot>/var/log/events.log


-1

आप घटनाओं की लिंक नीचे देख सकते हैं https://github.com/matinict/Magento-2-Events

मुझे लगता है कि अलग-अलग लोग अलग-अलग घटनाओं को साझा करते हैं, लेकिन कोई भी सटीकता मेरे समय को नहीं खोती है, बस इसकी चालें आपके Magento के 2 वेंडर की जांच आदि / event.xml पर जाती हैं, आशा है कि यह magento 2 डेवलपर को मदद कर सकती है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.