ম্যাজেন্টো 2 ইভেন্টের তালিকা


16

ম্যাজেন্টো 2 তে ইভেন্টের কোনও সম্পূর্ণ তালিকা আছে? আমি ম্যাজেন্টো ইভেন্টস চিট শীটের মতো কিছু খুঁজছি (1.9)


এখানে ঘটনা তালিকা আপনি magento2 সমস্ত ঘটনা পাওয়া যায় advancedcheckout.com/blog/list-event-magento2.html
জিতেন্দ্র Mohanta

উত্তর:


18

আমি ব্যবহার করে ম্যাজেন্টো 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/... আমি এখনো কোন ধারণা আছে কীভাবে এই ইভেন্টগুলি প্রেরণ করা হয় তবে সেগুলি তালিকায় অন্তর্ভুক্ত করা দুর্দান্ত হবে!
জে ডিওয়ার্ক

আপনি কীভাবে জানবেন যে এর ইভেন্টের নামটি বিদ্যমান নেই? হতে পারে আপনি অন্য নামের সাথে ম্যাজেন্টো 2 তে সমমানের সন্ধান করছেন?
মবলপর্দা

আমরা একই জিনিস সম্পর্কে কথা বলছি কিনা তা নিশ্চিত নয়। আমি কেবল ভাবছিলাম যে কেন ইভেন্টটি sales_order_save_after(যেমন একটি উদাহরণ হিসাবে) তালিকায় আসে না (এবং অনুসন্ধান) এছাড়াও এটি একটি গতিশীল ইভেন্টের মতো দেখাচ্ছে না। এবং তখন আমি ভাবছিলাম যে কীভাবে এবং কীভাবে আরও সম্পূর্ণ তালিকা পাওয়ার জন্য এই জাতীয় ইভেন্টগুলি অন্তর্ভুক্ত করা সম্ভব। এবং স্পষ্টতই আমি কেবল ম্যাজেন্টো 2 এর কথা বলছি sales_order_save_afterএকটি ম্যাজেন্টো 2 ইভেন্ট, যতদূর আমি বলতে পারি।
জে ডিওয়ার্ক

14

স্পষ্টতই, একটি ভাল অনুশীলন নয়, তবে আমি একটি লিঙ্ক সরবরাহ করছি যা ম্যাজেন্টো 2-র গুরুত্বপূর্ণ ইভেন্টগুলি মেনে চলেছে

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

অবশ্যই ইভেন্টের তালিকাটি অসম্পূর্ণ, যেমন আপনি ম্যাজেন্টো 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 / ডিবি / সংগ্রহ / AbstractCollection.php

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

এরকম অনেকগুলি ইভেন্ট রয়েছে এবং এটি ম্যাজেন্টো 2-তে স্পষ্টভাবে এবং স্পষ্টতই উত্পন্ন ইভেন্টগুলির সংমিশ্রণ


ভাল জিনিস! আমাদের উত্তরগুলি এক জায়গায় থাকাতে মার্জ করা উচিত। আপনি কি মনে করেন?
mbalparda

ভাল আপনার
উত্তরটিও

1

সর্বোপরি উত্তরগুলি দুর্দান্ত কাজ করে তবে কখনও কখনও আপনাকে কোনও নির্দিষ্ট পৃষ্ঠা লোডে কী ইভেন্টগুলি নিক্ষেপ করা হয় এবং সেগুলি কীভাবে নিক্ষেপ করা হয় তা জানতে হবে।

সুতরাং এখানে সর্বোত্তম উপায় (এটি আমার মতামত অনুসারে), xDebug ব্যবহার করুন এবং ক্লাসে 56 লাইনে একটি ব্রেক পয়েন্ট সেট করুন Magento\Framework\Event\Manager(এটি libফোল্ডারে নয় appফোল্ডারে রয়েছে)।

আপনার ডিবাগার সালে মাত্র তা জানাও "মূল্যায়্ন করুন এবং লগ ইন করুন"$eventName পরিবর্তনশীল দেখতে সমস্ত ঘটনা কনসোলে প্রদর্শন হিসাবে আপনি পৃষ্ঠাটি লোড।

আমি "সাসপেন্ড" বিকল্পটি অক্ষম করারও সুপারিশ করব যেহেতু এখানে কয়েকশ ঘটনা ছুঁড়ে দেওয়া হতে পারে, প্রথম ব্রেকপয়েন্টে আঘাত হানার জন্য আপনার এটিকে ছেড়ে দেওয়ার প্রয়োজন হতে পারে এবং তারপরে আপনি এটি সরাতে পারেন।

ইভেন্টের নাম ব্রেকআপপয়েন্ট পৃষ্ঠার লোডে সমস্ত ইভেন্ট পাঠানোর কেন এটিই আমার সেরা উপায়, কারণ এটি আপনাকে নিয়ন্ত্রণকারীদের দ্বারা প্রেরিত সমস্ত ইভেন্টগুলিও প্রদর্শন করবে। প্রতিটি কন্ট্রোলার পূর্বে এবং পরে সম্পূর্ণ অ্যাকশননাম, রুটনাম এবং ডিফল্ট পোস্টডিস্প্যাচ সমন্বিত নামের সাথে ইভেন্ট প্রেরণ করে। প্রেরণ () পদ্ধতির 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 দেখতে পারেন

আমি ভোগ করি যে বিভিন্ন লোক বিভিন্ন ইভেন্ট ভাগ করে নেয় তবে কোনও সঠিকতা আমার সময়টি হারাতে পারেনি শেষ মুহূর্তে তার ঠিক কৌশলগুলি আপনার ম্যাজেন্টো 2 বিক্রেতার চেক ইত্যাদি / ইভেন্ট.এক্সএমএল এ যায়, আশা করি এটি 2 বিকাশকারীকে ম্যাজেন্টোতে সহায়তা করতে পারে

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