Apakah ada daftar lengkap acara di Magento 2? Saya mencari sesuatu seperti Magento Events Cheat Sheet (1.9)
event-observer
magento2
mbalparda
sumber
sumber
Jawaban:
Saya mengumpulkan daftar acara Magento 2 menggunakan
Daftar ini dibagi dalam 2 bagian, satu untuk acara statis dan satu untuk dinamika.
Dari sini , peristiwa statis adalah semua peristiwa yang didefinisikan dengan nama acara lengkap seperti:
Peristiwa dinamis adalah semua peristiwa yang didefinisikan secara dinamis, pada saat runtime, mengambil nama acara seperti:
Daftar ini ada dalam spreadsheet untuk bacaan yang lebih baik. Saya meninggalkan 2 baris setelah pertandingan untuk pemahaman yang lebih baik tentang konteks acara.
Daftar yang sama dapat ditemukan mencari di resmi Magento 2 repo untuk
_eventManager->dispatch
sumber
sales_order_save_after
misalnya yang cukup penting untuk tugas saya saat ini tidak ada dan ketika Anda mencari melalui repo Magento 2 Anda akan melihat bahwa tidak adadispatch
sama sekali untuk itu: github.com/magento/magento2/… Saya belum tahu bagaimana acara ini dikirim tetapi akan sangat bagus untuk memasukkannya dalam daftar!sales_order_save_after
(seperti salah satu contoh) tidak muncul dalam daftar (dan pencarian) juga tidak terlihat seperti acara yang dinamis. Dan kemudian saya berpikir jika dan bagaimana mungkin untuk memasukkan acara seperti itu untuk mendapatkan daftar yang lebih lengkap. Dan jelas saya hanya berbicara tentang Magento 2sales_order_save_after
adalah acara Magento 2, sejauh yang saya tahu.Jelas, bukan praktik yang baik, tetapi saya menyediakan satu tautan yang telah memenuhi acara penting di Magento2
http://cyrillschumacher.com/magento2-list-of-all-dispatched-events/
Ofcourse daftar acara tidak lengkap, seolah-olah Anda telah bekerja dengan Magento 1.x, logika pengiriman peristiwa tetap dipertahankan
lib/internal/Magento/Framework/Model/AbstractModel.php
Muat sebelum dan sesudah peristiwa modelSimpan sebelum dan sesudah peristiwa objek model
Menghapus objek
Membersihkan objek
Pengiriman pengontrol
lib / internal / Magento / Framework / App / Action / Action.php
Tata letak frontend membuat acara
Koleksi Model
lib / internal / Magento / Kerangka / Model / ResourceModel / Db / Collection / AbstractCollection.php
Ada banyak peristiwa seperti itu, dan itu adalah kombinasi dari peristiwa yang dihasilkan secara eksplisit dan implisit di Magento2
sumber
Jawaban di atas semuanya bekerja dengan baik, tetapi kadang-kadang Anda perlu tahu acara apa yang dilemparkan pada pemuatan halaman tertentu dan urutannya.
Jadi di sini ada cara terbaik (menurut saya untuk mengetahui hal ini), gunakan xDebug dan atur break point on line 56 di kelas
Magento\Framework\Event\Manager
(ada dilib
folder bukanapp
folder).Dalam debugger Anda hanya kirim ke "Evaluasi dan log" yang
$eventName
variabel dan menonton semua peristiwa ditampilkan dalam konsol seperti yang Anda memuat halaman.Saya juga akan merekomendasikan menonaktifkan opsi "Tangguhkan" karena mungkin ada ratusan peristiwa yang dilemparkan, Anda mungkin perlu membiarkannya untuk breakpoint pertama yang terkena dan kemudian Anda dapat menghapusnya.
Mengapa saya pikir ini adalah cara terbaik untuk membuat semua acara dikirim pada halaman memuat adalah karena ini juga akan menunjukkan kepada Anda semua acara yang dikirim oleh pengontrol. Setiap pengontrol mengirimkan peristiwa sebelum dan sesudah dengan nama-nama yang terdiri yang mengandung FullActionName, RouteName dan satu postdispatch default. Lihat
Framework\App\Action
kelas di bawah metode dispatch () .sumber
Its sulit untuk mendapatkan event untuk mengetahui di halaman tertentu. Jadi, Anda dapat mencoba kode ini untuk melacak acara yang dipanggil dan menggunakan yang terbaik untuk kebutuhan Anda
tambahkan kode ini di bawah nama acara
Anda dapat memeriksa daftar di
<magentoroot>/var/log/events.log
sumber
Anda dapat memeriksa tautan acara di bawah ini https://github.com/matinict/Magento-2-Events
Saya menderita bahwa orang yang berbeda berbagi acara yang berbeda tetapi tidak ada keakuratan yang kehilangan waktu saya pada akhirnya hanya triknya pergi ke cek magento 2 Anda vendor / event.xml, Semoga dapat membantu pengembang Magento 2
sumber