আমি কোথায় ম্যাজেন্টো ইভেন্টগুলির একটি সম্পূর্ণ তালিকা পেতে পারি?


94

আমি জানি যে ম্যাজেন্টোর একটি হুক-এর মতো সিস্টেম রয়েছে যা ইভেন্ট বলে। কারও কি পুরো তালিকা বা স্ক্রিপ্ট রয়েছে যা কোন ইভেন্টগুলি বলা যেতে পারে তা নির্ধারণের জন্য ব্যবহার করা যেতে পারে?


4
আমি একটা চমৎকার ঠকাই শীট হিসাবে ব্যবহার nicksays.co.uk/magento-events-cheat-sheet-1-7
Derrik Nyomo

1
@ ডেরিকনোমো - আপনার পোস্টের উচিত উত্তর হিসাবে এটি সরবরাহ করা তথ্যের সংক্ষিপ্তসার সহ। :-)
24:40 '

1
ইভেন্টের জন্য চিট শিটগুলি আসলে ঝামেলা বেশি, কারণ তারা আপনাকে একটি মিথ্যা ধারণা দেয় যে 'আমি চাই ইভেন্টটি বিদ্যমান নয়' এবং আপনি কোডিংয়ের সময় নষ্ট করতে পারেন, যে ইভেন্টটি ব্যবহার করা যেতে পারে তা মিস করে (অনেক পরে গতিশীলভাবে তৈরি করা হয়েছে) আমি এই প্রশ্নের একটি উত্তর পোস্ট করেছি: লিঙ্ক এবং আমার উত্তরটিও এই প্রশ্নের সাথে সম্পর্কিত। এটি আপনাকে একটি সম্পূর্ণ 'তালিকা' দেয় না তবে এটি আপনাকে যে ক্রিয়া / পৃষ্ঠার বোঝার প্রতি আগ্রহী সেগুলির জন্য ইভেন্টের একটি সম্পূর্ণ তালিকা দেয়।
প্রক্সি ব্লু

উত্তর:


102

সমস্ত ম্যাজেন্টো ইভেন্টের একটি তালিকা নেই, কারণ বেশিরভাগ ইভেন্টের নাম পরিবর্তনশীল।

আপনি যদি আমাকে জিজ্ঞাসা করেন, এই মূল ঘটনাগুলি (এবং ফলাফলগুলি) জেনে রাখা ভাল সূচনা পয়েন্ট (নিক থেকে তালিকার পাশে):

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

সংগ্রহগুলি_মোহর_মোডেল_ রিসোর্স_ডিবি_ সংগ্রহ_আবস্ট্র্যাক্ট থেকে প্রসারিত সংগ্রহগুলিতে দুটি জেনেরিক ইভেন্টও রয়েছে:

উদাহরণস্বরূপ: সংগ্রহ লোড করতে এসকিউএল পরিবর্তন করতে:

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

4
খুব ভাল একটি উত্তর; আমরা উইকিতে টেক করতে পারি এমন কিছুর আশায় _eventPrefixমডেল ইভেন্টগুলির জন্য গুরুত্ব , লক্ষ্যযুক্ত অনুরোধ ইভেন্টগুলি, মাঝে মধ্যে দরকারী জেনেরিক ব্লক ইভেন্টগুলি এবং ইভেন্টগুলি
সন্ধানের

1
চমৎকার। আমি লক্ষ করতে চেয়েছিলাম যে Magento 2 তে তাদের সত্যিকার অর্থে সমস্ত মূল ক্লাসের একটি নির্ধারিত ইভেন্টের উপসর্গ রয়েছে তা নিশ্চিত করা দরকার। আমি কেবল ইভেন্টের উপসর্গটি সংজ্ঞায়িত করতে আসলে পুনরায় লিখিত ক্লাস করেছি যাতে আমি সাফল্যের সাথে সেভ / লোড ইভেন্টগুলিতে ঝুঁকতে পারি। হুম। আসলে আমি মনে করি আমি নিজেই ম্যাজেন্টো 2 উত্স পরীক্ষা করব।
টিম রেইনল্ডস

3
পদ্ধতির আমি সাধারণত নিতে, একটি দ্রুত সম্পাদনা / সংরক্ষণ / প্রত্যাবর্তন app/code/core/Mage/Core/Model/App.phpএবং mage::log($eventName,null,'events.txt',true);করতে dispatchEventপদ্ধতি। আমি যে পৃষ্ঠাটি পর্যবেক্ষণ করতে চাইছি সেটি লোড করুন। স্পষ্টতই এটিকে যেমন রাখবেন না এবং একবার আপনার ভার / লগ / ইভেন্ট.টিএসটি তৈরি হয়ে গেলে ফিরে আসুন। নোংরা, হ্যাঁ তাড়াতাড়ি, হ্যাঁ :)
B00MER

2
ভাল, যদি আপনি চান যে আপনার পর্যবেক্ষক একটি পৃষ্ঠায় থাকুক। তবে যত্নবান হোন, এমন কিছু ইভেন্ট রয়েছে যা প্রেরণ করা উচিত, তবে তা হতে পারে না। একটি অর্ডার বা অর্থপ্রদানের ইভেন্ট রয়েছে যা নিক্ষেপ করা হয় না, যখন পেপাল দিয়ে দেওয়া হয় ...
ফ্যাবিয়ান ব্ল্যাচসমিড

ম্যাজেন্টো @ ফ্যাবিয়ান ব্ল্যাচসমিড্টে চালান তৈরির পরে কি কোনও অনুষ্ঠান বরখাস্ত হয়েছে
কিংশুক দেব

48

রক্তাক্ত করুন grep 'Mage::dispatchEvent' app/ -rsnএটি আপনার ইনস্টলেশন সম্পর্কিত নির্দিষ্ট ইভেন্টের একটি তালিকা সরবরাহ করবে কারণ ইভেন্টের তালিকাটি ম্যাজেন্টো সংস্করণ, কাস্টমাইজেশন এবং ইনস্টল হওয়া এক্সটেনশানগুলির উপর নির্ভর করে পরিবর্তিত হতে পারে।


2
এটি সেরা পরামর্শ, এটি তৃতীয় পক্ষের মডিউল ইভেন্টগুলিও অন্তর্ভুক্ত করবে। সাধারণত যখন আমি কোন পৃষ্ঠাগুলির জন্য নির্দিষ্ট ইভেন্টগুলির জন্য জানতে পারি, আমি অ্যাপটি লগইন করি: প্রেরণযোগ্য পরামিতি।
পেটার ঝাজাবাজভ

1
গ্রেপ আপনাকে বাজে তথ্যও দেবে: উদাহরণস্বরূপ, এটি দাবি করে যে এটি sales_order_place_afterঘটবে, তবে মনে হচ্ছে যে এটি কল করার জন্য তা কল্পনা করা হয়নি Checkout/Type/Onepage.php
কোজিরো

এটি একটি দুর্বল উত্তর কারণ এটি কেবলমাত্র উপলভ্য ইভেন্টগুলির একটি অংশ বেছে নেবে কারণ এটি গতিশীলভাবে উত্পন্ন সমস্ত ইভেন্টকে পুরোপুরি মিস করে। @PetarDzhambazov ডেস্প্যাচার থেকে লগ ইন করার ভাল উপদেশ এবং তারপর লোড পৃষ্ঠাগুলি আপনি আগ্রহী দেয় দ্বারা পর্যন্ত সবচেয়ে ভালো উত্তর FabianBlechschmidt কর্তৃক প্রদত্ত গৃহীত উত্তর।
ডোম

26

আমি এটি একটি সুন্দর ঠকানো শীট হিসাবে ব্যবহার করি http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ । এটিতে সমস্ত ইভেন্ট রয়েছে যা 1.7 এ কল করা যেতে পারে।


4
যেহেতু আপনি ইতিমধ্যে সামগ্রীটিকে লিঙ্ক করার জন্য একটি ভাল কাজ করেছেন, নিক "স্ক্রু ম্যাজেন্টো" বলে এবং তার পৃষ্ঠাটি মুছে
ফেলার

3
আমি এই তালিকার একজন অনুরাগী নই, কারণ 1: এটি অসম্পূর্ণ, 2: ম্যাজেন্টো-তে "সমস্ত" ইভেন্টের সাথে ম্যাজেন্টো সম্পর্কে আরও 1231 ব্লগ রয়েছে (+ কিছু উইকি পৃষ্ঠা ম্যাজেন্টো)।
ফ্লোরিনেলচিস

@ বেনমার্কগুলি অনুমান করে যে সময়কালে কী ঘটেছিল ...
toon81

9

আমি জানি যে এই প্রশ্নের উত্তর দেওয়া হয়েছে আমি এখানে আমার পথটি যুক্ত করছি:

  • আমি আমার ব্রাউজারে যা পৃষ্ঠা পর্যবেক্ষণ করতে চাই তা প্রস্তুত করি
  • আমি অ্যাপ / Mage.php খুলি
  • জন্য public static function dispatchEventশুরুতে আমি যোগ মধ্যে: (~ 446 Ln) //Mage::log($name, null, 'events.log', true);
  • এই লাইনটি
  • আমি যে পৃষ্ঠাটি রিফ্রেশ করছি
  • আবার লাইন মন্তব্য

তারপরে আপনি var / লগ / ইভেন্টস.লগ খুলুন (~ 40 কেবি) এবং কেবলমাত্র সেই পৃষ্ঠায় একটি সম্পূর্ণ প্রচুর ইভেন্ট দেখুন! :)


2
এটি কিছু ইভেন্ট মিস করবে যা স্টোর কনফিগারেশনের মার্জ হওয়ার আগেই বরখাস্ত করা হয়।
বেনমার্কস

6

উত্তর ইতিমধ্যে গ্রহণ করা হয়েছে তবে আমি ভবিষ্যতের জন্য যাইহোক আমার উত্তর পোস্ট করব:

আপনি যদি ম্যাজেন্টোর কাছে ইভেন্টগুলির তালিকা দেখতে চান তবে আপনার কাছে 3 টি বিকল্প রয়েছে:

1) গুগল এর জন্য, অনেক লোক আছেন যারা ম্যাজেন্টো ইভেন্টগুলির একটি তালিকা সংকলন করেছেন

2) এমন একটি মডিউল তৈরি করুন controller_action_predispatchযা ইভেন্টটিতে হুক হয় যা ইভেন্টটি অন্য কোনও ইভেন্ট বলার আগে ডাকা হয়। এই মডিউলটির ভিতরে আপনি প্রেরিত কিছু ইভেন্ট লগ করতে পারেন:

কনফিগ.এক্সএমএলে নিম্নলিখিতটি যুক্ত করুন

<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) আপনার যদি এসএসএইচ অ্যাক্সেস থাকে তবে আপনি সমস্ত ইভেন্টের (এবং তাদের ফাইল যেখানে পাঠানো হয়েছে) এর একটি ওভারভিউ পেতে নিম্নলিখিত কমান্ডটি চালাতে পারেন:

cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/

1
দুঃখিত - যদিও # 3 ভাল, আপনার উত্তর থেকে 1 এবং 2 তে তথ্যটি সত্যই সঠিক নয়। 1) এর আগে controller_action_predispatchউল্লেখযোগ্যভাবে কয়েকটি গুলি চালানো হয়েছে controller_front_init_before। ২) এই পদ্ধতির দ্বারা প্রেরিত প্রতিটি ইভেন্টকে কেবল লগ করা যাবে না , এটি কি টাইপো বা অসম্পূর্ণ বিভাগ?
বেনমার্কস

এটি "সর্বাধিক";) তে সম্পাদনা করেছেন
কেনি

2
দুঃখিত, এখনও খুব নির্ভুল নয় :-( - আরও অনেক ঘটনা প্রেরণ করা হয়েছে (প্রিসিপ্যাচ, লেআউট, উপস্থাপনা, পাশাপাশি মডেল এবং সংগ্রহের বোঝা) ...
বেনমার্ক

"কিছু ইভেন্ট" এর উত্তর আপডেট করেছে।
কেনি

4

আমি ম্যাজেন্টো বিকাশকারী সরঞ্জামদণ্ডটি ব্যবহার করছি যাতে লোড হওয়া পৃষ্ঠায় লক্ষ্য করা যায় এমন ইভেন্টগুলি প্রদর্শনের দুর্দান্ত বৈশিষ্ট্য রয়েছে।



4

আমি ম্যাজেন্তোর কোর ম্যাজে মডিউলটিতে একটি গ্রেপ করেছি এবং একটি তালিকা মেনে চলেছি,

ম্যাজেন্টো ইভেন্টগুলির অবসন্ন তালিকা

পিএস হিসাবে উল্লেখ করা হয়েছে, এমন ইভেন্টগুলি থাকতে পারে যা ম্যাজেন্টোর অবহিত ফাংশনের অভ্যন্তরে রয়েছে তাই প্রয়োগের আগে ফাইল এবং লাইন রেফারেন্সটি পরীক্ষা করে দেখুন।

পরামর্শের জন্য উন্মুক্ত!


1
আপনি এখনও সাবক্ল্যাসড ম্যাজিক ইভেন্টের সমস্ত অনুপস্থিত। জন্য গ্রেপ করা যাবে না।
বেনমার্কস

হিসাবে যাদু ঘটনা? যেগুলি গতিশীল? আপনি প্লিজ
@


@ বেনমার্ক আমি সম্মত, আমি মনে করি না যে এর জন্য আমাদের সুস্পষ্টভাবে একটি তালিকা প্রস্তুত করা দরকার
হুজেফাম

সুতরাং আমার মন্তব্য, যা "বিস্তৃত" ব্যবহারের ভিত্তিতে অফার করা হয়েছিল
বেনমার্কগুলি

4
grep "::dispatchEvent" -R * | sort -u

grep "eventPrefix" -R * | sort -u

পূর্ববর্তী তালিকাভুক্ত গ্রেপ কমান্ডটি সদৃশ (প্রচুর পরিমাণে) রেন্ডার করবে এবং এটি ইভেন্ট প্রিফিক্সগুলির তালিকাটি কভার করে না যা গতিশীলভাবে উত্পন্ন ইভেন্টের নামগুলি বোঝার জন্য প্রয়োজন। এই কমান্ডগুলি উভয় তালিকাকে কেবল অনন্য মান সহ রেন্ডার করে। আপনি অন্যান্য গ্রেপ উত্তরের মতো -n পতাকা যুক্ত করতে পারেন এবং আমি মনে করি লাইন নম্বরটি পেতে পারেন। কিন্তু প্রশ্নটি তারা জিজ্ঞাসা করেনি যে তারা সমস্ত কোডে ছিল কোথায়? ~: _ ~


আমাদের এখানে একই রকম উত্তর রয়েছে। পড়ুন @TimBezhashvyly এর উত্তর
রাজীব কে টমি

সাজানোর .... পূর্ববর্তী তালিকাভুক্ত গ্রেপ কমান্ডটি সদৃশ (অনেক) রেন্ডার করবে এবং এটি ইভেন্টের উপসর্গগুলির তালিকাটি কভার করে না যা গতিশীলভাবে উত্পন্ন ইভেন্টের নামগুলি বোঝার জন্য প্রয়োজন। এই কমান্ডগুলি উভয় তালিকাকে কেবল অনন্য মান সহ রেন্ডার করে। আপনি অন্যান্য গ্রেপ উত্তরের মতো -n পতাকা যুক্ত করতে পারেন এবং আমি মনে করি লাইন নম্বরটি পেতে পারেন। কিন্তু প্রশ্নটি তারা জিজ্ঞাসা করেনি যে তারা সমস্ত কোডে ছিল কোথায়?
এমপ্রোটোটাইপ

আপনি দয়া করে আপনার উত্তর এই বিবরণ যোগ করতে পারেন? তারপরে আপনার উত্তরটি দুর্দান্ত হয়ে উঠবে ... (তারপরে একটি উচ্চারণ করতে প্রস্তুত) :-)
রাজীব কে টমি

এটা কি সাহায্য করে?
এমপ্রোটোটাইপ

হ্যাঁ. তার জন্য +1। :)
রাজীব কে টমি

3

এখানে একটি চিট শীটও রয়েছে


1
লোন লিঙ্কটি একটি দুর্বল উত্তর হিসাবে বিবেচিত হয় ( FAQ দেখুন ) যেহেতু এটি নিজেই অর্থহীন এবং লক্ষ্য সংস্থান ভবিষ্যতে জীবিত থাকার গ্যারান্টিযুক্ত নয় । উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা ভাল , এবং লিঙ্কটি রেফারেন্সের জন্য সরবরাহ করা ভাল।
j0k



2

আপনি একক লিঙ্কে ব্যাকএন্ড + ফ্রন্টএন্ড ইভেন্টের সমস্ত তালিকা খুঁজে পেতে পারেন

http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events


1
এটি একটি সম্পূর্ণ সম্পদ নয়, কারণ কোনও সম্পূর্ণ সংস্থান নেই।
বেনমার্ক

সদৃশ উত্তর ... আপনার চোখ 200px উপরে সরান;)
ইচ


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.