ম্যাজেন্টো 2 তে ইভেন্টের কোনও সম্পূর্ণ তালিকা আছে? আমি ম্যাজেন্টো ইভেন্টস চিট শীটের মতো কিছু খুঁজছি (1.9)
ম্যাজেন্টো 2 তে ইভেন্টের কোনও সম্পূর্ণ তালিকা আছে? আমি ম্যাজেন্টো ইভেন্টস চিট শীটের মতো কিছু খুঁজছি (1.9)
উত্তর:
আমি ব্যবহার করে ম্যাজেন্টো 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);
আরও ভাল পড়ার জন্য তালিকাটি স্প্রেডশিটে রয়েছে। ইভেন্টের প্রসঙ্গটি আরও ভালভাবে বোঝার জন্য আমি ম্যাচের পরে ২ টি লাইন রেখেছি।
একই তালিকায় অনুসন্ধানের খুঁজে পাওয়া যেতে পারে কর্মকর্তা Magento 2 রেপো জন্য_eventManager->dispatch
sales_order_save_after
উদাহরণস্বরূপ যা আমার বর্তমান কাজের জন্য চমত্কার গুরুত্বপূর্ণ অনুপস্থিত এবং আপনি Magento 2 মাধ্যমে অনুসন্ধান রেপো আপনি বিজ্ঞপ্তি পাবেন যে কোন dispatch
এটি জন্য সব সময়ে: github.com/magento/magento2/... আমি এখনো কোন ধারণা আছে কীভাবে এই ইভেন্টগুলি প্রেরণ করা হয় তবে সেগুলি তালিকায় অন্তর্ভুক্ত করা দুর্দান্ত হবে!
sales_order_save_after
(যেমন একটি উদাহরণ হিসাবে) তালিকায় আসে না (এবং অনুসন্ধান) এছাড়াও এটি একটি গতিশীল ইভেন্টের মতো দেখাচ্ছে না। এবং তখন আমি ভাবছিলাম যে কীভাবে এবং কীভাবে আরও সম্পূর্ণ তালিকা পাওয়ার জন্য এই জাতীয় ইভেন্টগুলি অন্তর্ভুক্ত করা সম্ভব। এবং স্পষ্টতই আমি কেবল ম্যাজেন্টো 2 এর কথা বলছি sales_order_save_after
একটি ম্যাজেন্টো 2 ইভেন্ট, যতদূর আমি বলতে পারি।
স্পষ্টতই, একটি ভাল অনুশীলন নয়, তবে আমি একটি লিঙ্ক সরবরাহ করছি যা ম্যাজেন্টো 2-র গুরুত্বপূর্ণ ইভেন্টগুলি মেনে চলেছে
http://cyrillschumacher.com/magento2-list-of-all-dispatched-events/
অবশ্যই ইভেন্টের তালিকাটি অসম্পূর্ণ, যেমন আপনি ম্যাজেন্টো 1.x এর সাথে কাজ করেছেন, ইভেন্টগুলি প্রেরণের যুক্তি ধরে রাখা হয়
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());
নিয়ন্ত্রক প্রেরণ
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
সামনের লেআউট ইভেন্ট রেন্ডার
$this->_eventManager->dispatch(
'controller_action_layout_render_before_' . $this->_request->getFullActionName()
);
মডেল সংগ্রহ
lib / অনুপস্থিত অভ্যন্তরীণ / Magento / ফ্রেমওয়ার্ক / মডেল / ResourceModel / ডিবি / সংগ্রহ / AbstractCollection.php
$this->_eventManager->dispatch($this->_eventPrefix . '_load_before', [$this->_eventObject => $this]);
$this->_eventManager->dispatch($this->_eventPrefix . '_load_after', [$this->_eventObject => $this]);
এরকম অনেকগুলি ইভেন্ট রয়েছে এবং এটি ম্যাজেন্টো 2-তে স্পষ্টভাবে এবং স্পষ্টতই উত্পন্ন ইভেন্টগুলির সংমিশ্রণ
সর্বোপরি উত্তরগুলি দুর্দান্ত কাজ করে তবে কখনও কখনও আপনাকে কোনও নির্দিষ্ট পৃষ্ঠা লোডে কী ইভেন্টগুলি নিক্ষেপ করা হয় এবং সেগুলি কীভাবে নিক্ষেপ করা হয় তা জানতে হবে।
সুতরাং এখানে সর্বোত্তম উপায় (এটি আমার মতামত অনুসারে), xDebug ব্যবহার করুন এবং ক্লাসে 56 লাইনে একটি ব্রেক পয়েন্ট সেট করুন Magento\Framework\Event\Manager
(এটি lib
ফোল্ডারে নয় app
ফোল্ডারে রয়েছে)।
আপনার ডিবাগার সালে মাত্র তা জানাও "মূল্যায়্ন করুন এবং লগ ইন করুন"$eventName
পরিবর্তনশীল দেখতে সমস্ত ঘটনা কনসোলে প্রদর্শন হিসাবে আপনি পৃষ্ঠাটি লোড।
আমি "সাসপেন্ড" বিকল্পটি অক্ষম করারও সুপারিশ করব যেহেতু এখানে কয়েকশ ঘটনা ছুঁড়ে দেওয়া হতে পারে, প্রথম ব্রেকপয়েন্টে আঘাত হানার জন্য আপনার এটিকে ছেড়ে দেওয়ার প্রয়োজন হতে পারে এবং তারপরে আপনি এটি সরাতে পারেন।
পৃষ্ঠার লোডে সমস্ত ইভেন্ট পাঠানোর কেন এটিই আমার সেরা উপায়, কারণ এটি আপনাকে নিয়ন্ত্রণকারীদের দ্বারা প্রেরিত সমস্ত ইভেন্টগুলিও প্রদর্শন করবে। প্রতিটি কন্ট্রোলার পূর্বে এবং পরে সম্পূর্ণ অ্যাকশননাম, রুটনাম এবং ডিফল্ট পোস্টডিস্প্যাচ সমন্বিত নামের সাথে ইভেন্ট প্রেরণ করে। প্রেরণ () পদ্ধতির Framework\App\Action
অধীন শ্রেণিটি দেখুন ।
তার কঠিন ঘটনা একটা নির্দিষ্ট পৃষ্ঠা থেকে জানতে পারেন। সুতরাং ইভেন্টগুলি কল হয়ে ওঠার জন্য আপনি এই কোডটি চেষ্টা করতে পারেন এবং আপনার প্রয়োজনের জন্য সেরাটি ব্যবহার করতে পারেন
/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
আপনি নীচের ইভেন্টগুলির লিঙ্কটি https://github.com/matinict/Magento-2-Events দেখতে পারেন
আমি ভোগ করি যে বিভিন্ন লোক বিভিন্ন ইভেন্ট ভাগ করে নেয় তবে কোনও সঠিকতা আমার সময়টি হারাতে পারেনি শেষ মুহূর্তে তার ঠিক কৌশলগুলি আপনার ম্যাজেন্টো 2 বিক্রেতার চেক ইত্যাদি / ইভেন্ট.এক্সএমএল এ যায়, আশা করি এটি 2 বিকাশকারীকে ম্যাজেন্টোতে সহায়তা করতে পারে