Saya tahu bahwa Magento memiliki sistem seperti kait yang disebut peristiwa. Adakah yang memiliki daftar lengkap atau naskah yang dapat digunakan untuk menentukan acara mana yang dapat dipanggil?
Saya tahu bahwa Magento memiliki sistem seperti kait yang disebut peristiwa. Adakah yang memiliki daftar lengkap atau naskah yang dapat digunakan untuk menentukan acara mana yang dapat dipanggil?
Jawaban:
Tidak ada daftar semua peristiwa magento, karena sebagian besar peristiwa dinamai secara dinamis.
Jika Anda bertanya kepada saya, mengetahui peristiwa penting ini (dan konsekuensinya) adalah titik awal yang baik (di samping daftar dari nick):
Setiap Objek yang diperluas dari Mage_Core_Model_Abstract mengirimkan banyak peristiwa seputar pemuatan, penyimpanan, dan penghapusan:
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
Misalnya menambahkan cek, setelah objek dimuat
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
untuk menambahkan data tambahan ke objek sebelum disimpan
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
Untuk menyimpan model lain setelah "induk" disimpan
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
bersihkan, sebelum model dihapus
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
bersihkan, sebelum model dihapus - atau mungkin sesudahnya? Anda masih di sini dalam transaksi!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
Jika Anda ingin memastikan entitas telah dihapus
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
Koleksi yang diperluas dari Mage_Core_Model_Resource_Db_Collection_Abstract memiliki dua acara umum juga:
Misalnya: untuk mengubah SQL untuk memuat koleksi:
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
Misalnya: untuk menambahkan data tambahan ke objek:
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
_eventPrefix
untuk acara model, acara permintaan yang ditargetkan, acara blok generik yang kadang-kadang berguna, dan pentingnya penebangan untuk menemukan acara
app/code/core/Mage/Core/Model/App.php
dan mage::log($eventName,null,'events.txt',true);
ke dispatchEvent
metode. Muat halaman yang saya coba amati. Tentunya jangan biarkan ini apa adanya dan kembalikan setelah var / logs / events.txt Anda dibuat. Kotor, ya. Cepat ya. :)
Lakukan bloody grep 'Mage::dispatchEvent' app/ -rsn
Ini akan memberi Anda daftar acara khusus untuk instalasi Anda karena daftar acara dapat bervariasi tergantung pada versi Magento, penyesuaian dan ekstensi yang diinstal.
sales_order_place_after
akan terjadi, tetapi sepertinya panggilan untuk memecatnya dikomentari Checkout/Type/Onepage.php
.
Saya menggunakan ini sebagai lembar contekan yang bagus http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ . Ia memiliki semua peristiwa yang dapat dipanggil di 1.7.
Saya tahu bahwa pertanyaan ini telah dijawab, saya tambahkan saja di sini:
public static function dispatchEvent
(ln: ~ 446) di awal saya tambahkan
//Mage::log($name, null, 'events.log', true);
Kemudian Anda membuka var / log / events.log (~ 40kb) dan melihat banyak peristiwa di halaman itu saja! :)
Jawaban sudah diterima tetapi saya tetap akan mengirim jawaban saya untuk masa depan:
Jika Anda ingin melihat daftar acara yang dimiliki Magento, Anda memiliki 3 opsi:
1) Google untuk itu, ada banyak orang yang telah menyusun daftar acara Magento
2) Buat modul yang mengaitkan pada controller_action_predispatch
acara yang merupakan acara yang dipanggil sebelum acara lain dipanggil. Di dalam modul ini Anda dapat mencatat beberapa peristiwa yang dikirim:
Tambahkan yang berikut ini di config.xml
<events>
<controller_action_postdispatch>
<observers>
<controller_action_after>
<class>yourmodule/observer</class>
<method>hookToControllerActionPostDispatch</method>
</controller_action_after>
</observers>
</controller_action_postdispatch>
</events>
Dan di dalam modul / Model / Pengamat Anda:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
Di atas akan mencatat setiap peristiwa yang dikirim ...
3) Jika Anda memiliki akses SSH Anda dapat menjalankan perintah berikut untuk mendapatkan gambaran umum dari semua peristiwa (dan file mereka di mana mereka dikirim):
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
, terutama controller_front_init_before
. 2) Pendekatan ini tidak akan mencatat setiap peristiwa yang dikirim, apakah ini bagian salah ketik atau tidak lengkap?
Saya menggunakan Magento Developer Toolbar yang memiliki fitur bagus untuk menampilkan acara yang dapat diamati pada halaman yang dimuat.
Di sini Anda dapat melihat sebagian besar acara yang ada: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Saya telah melakukan grep pada modul Mage inti Magento, dan memenuhi daftar,
PS Seperti yang ditunjukkan, mungkin berisi peristiwa yang ada di dalam fungsi Magento yang sudah usang, jadi periksa file dan referensi baris sebelum implementasi.
Buka saran!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
Perintah grep yang terdaftar sebelumnya akan membuat duplikat (banyak) dan itu tidak mencakup daftar awalan acara yang akan diperlukan untuk memahami nama acara yang dihasilkan secara dinamis. Perintah-perintah ini membuat kedua daftar dengan hanya nilai unik. Anda dapat menambahkan flag -n seperti jawaban grep lainnya dan mendapatkan nomor baris yang saya kira. Tetapi pertanyaannya tidak menanyakan di mana dalam kode mereka semua. ~ _ ~
ada lembar contekan di sini juga http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Di sini Anda dapat menemukan daftar lengkap peristiwa pengamat.
Lihat lembar contekan ini
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
Ini akan sangat membantu Anda.
Anda dapat menemukan semua daftar acara backend + frontend pada satu tautan
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Jika seseorang membutuhkan daftar yang diperbarui, saya mencoba memperbarui ini:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
Anda dapat menemukan semua acara magento-1x dengan mengikuti url. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Referensi