Magento'nun olaylar denilen kancaya benzer bir sistemi olduğunu biliyorum. Hangi olayların çağrılabileceğini belirlemek için kullanılabilecek eksiksiz bir liste veya bir komut dosyası var mı?
Magento'nun olaylar denilen kancaya benzer bir sistemi olduğunu biliyorum. Hangi olayların çağrılabileceğini belirlemek için kullanılabilecek eksiksiz bir liste veya bir komut dosyası var mı?
Yanıtlar:
Tüm magento olaylarının bir listesi yoktur, çünkü olayların çoğu dinamik olarak adlandırılmıştır.
Bana sorarsanız, bu önemli olayları (ve sonuçlarını) bilmek iyi bir başlangıç noktasıdır (nickli listenin yanında):
Mage_Core_Model_Abstract'dan genişletilen her Nesne, yükleme, kaydetme ve silme etrafında birçok olay gönderir:
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
Örneğin, çekleri eklemek için, nesne yüklendikten sonra
app/code/core/Mage/Core/Model/Abstract.php:267
Mage::dispatchEvent($this->_eventPrefix.'_load_after', $this->_getEventData());
// e.g. cms_page_load_after
kaydedilmeden önce nesneye ek veri eklemek için
app/code/core/Mage/Core/Model/Abstract.php:391
Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
// e.g. catalog_product_save_before
"Ebeveyn" kaydedildikten sonra diğer modelleri kaydetmek için
app/code/core/Mage/Core/Model/Abstract.php:466
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());
// e.g. catalogrule_rule_save_after
Model silinmeden önce temizleyin.
app/code/core/Mage/Core/Model/Abstract.php:501
Mage::dispatchEvent($this->_eventPrefix.'_delete_before', $this->_getEventData());
// e.g. store_delete_before
model silinmeden önce - veya daha sonra belki temizlenebilir mi? Hala işlemdesiniz!
app/code/core/Mage/Core/Model/Abstract.php:529
Mage::dispatchEvent($this->_eventPrefix.'_delete_after', $this->_getEventData());
// e.g. website_delete_after
Varlığın silindiğinden emin olmak istiyorsanız
app/code/core/Mage/Core/Model/Abstract.php:541
Mage::dispatchEvent($this->_eventPrefix.'_delete_commit_after', $this->_getEventData());
// e.g. customer_delete_commit_after
Mage_Core_Model_Resource_Db_Collection_Abstract'den genişletilmiş koleksiyonların da iki genel etkinliği vardır:
Örneğin: koleksiyonu yüklemek üzere SQL'i değiştirmek için:
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
Örneğin: nesnelere ek veri eklemek için:
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
Model olayların önemi , hedeflenen talep olayları, zaman zaman faydalı olan genel blok olayları ve olayları bulmak için günlüğe kaydetmenin önemi
app/code/core/Mage/Core/Model/App.php
ve mage::log($eventName,null,'events.txt',true);
hiç dispatchEvent
yöntemle. Sayfayı yükle Gözlemeye çalışıyorum. Açıkçası bunu olduğu gibi bırakmayın ve var / logs / events.txt dosyanız oluşturulduktan sonra geri dönmeyin. Kirli, evet. Çabuk, evet. :)
Kanlı yapın grep 'Mage::dispatchEvent' app/ -rsn
Bu, kurulum listesi Magento versiyonuna, kurulu olan özelleştirmelere ve uzantılara bağlı olarak değişebileceğinden kurulumunuza özel olayların bir listesini sunar.
sales_order_place_after
olacağını iddia ediyor , ancak ateş çağrısının yorumlandığı anlaşılıyor Checkout/Type/Onepage.php
.
Bunu güzel bir hile sayfası olarak kullanıyorum http://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/ . 1.7'de çağrılabilecek tüm olaylara sahiptir.
Bu sorunun cevaplandığını biliyorum, buraya sadece yolumu ekliyorum:
public static function dispatchEvent
Ben eklemek için (ln: ~ 446) için
//Mage::log($name, null, 'events.log', true);
Daha sonra var / log / events.log (~ 40kb) dosyasını açın ve sadece bu sayfadaki bir sürü olayı görün! :)
Cevap çoktan kabul edildi, ancak gelecek için hala cevabımı göndereceğim:
Magento'nun sahip olduğu etkinliklerin listesini görmek istiyorsanız 3 seçeneğiniz var:
1) Google bunun için Magento etkinliklerinin bir listesini derleyen birçok insan var
2)controller_action_predispatch
Başka bir olay çağrılmadan önce çağrılan olay olan olayı kancalayan bir modül oluşturun . Bu modülün içinde gönderilen bazı olayları kaydedebilirsiniz:
Config.xml dosyasına şunu ekleyin
<events>
<controller_action_postdispatch>
<observers>
<controller_action_after>
<class>yourmodule/observer</class>
<method>hookToControllerActionPostDispatch</method>
</controller_action_after>
</observers>
</controller_action_postdispatch>
</events>
Ve senin modülün / Model / Gözlemcinin içinde:
public function hookToControllerActionPostDispatch($observer) {
Mage::log($observer->getEvent()->getControllerAction()->getFullActionName());
}
Yukarıdakiler, gönderilen her olayı günlüğe kaydeder ...
3) SSH erişiminiz varsa, tüm olaylara (ve gönderildikleri dosyalara) genel bir bakış için aşağıdaki komutu çalıştırabilirsiniz:
cd /path/to/<magento-root>
grep -nris 'dispatchEvent' app/code/
controller_action_predispatch
, özellikle de ateşlenen birkaç olay var controller_front_init_before
. 2) Bu yaklaşım basitçe gönderilen her olayı kaydetmeyecek, bu bir yazım hatası mı yoksa eksik bir bölüm mü?
Yüklenen sayfada gözlenebilecek olayları görüntüleme güzel özelliği olan Magento Geliştirici Araç Çubuğunu kullanıyorum.
Burada mevcut olayların çoğunu görebilirsiniz: http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Magento'nun çekirdek Mage modülünü tanıdım ve bir listeye uydum.
Magento Olaylarının Kapsamlı Listesi
PS Belirtildiği gibi, Magento'nun kullanım dışı işlevlerinin içinde olaylar içerebilir, bu nedenle uygulamadan önce dosya ve satır referansını kontrol edin.
Önerilere açık!
grep "::dispatchEvent" -R * | sort -u
grep "eventPrefix" -R * | sort -u
Önceden listelenen grep komutu, kopyaları (çok) verir ve dinamik olarak oluşturulan olay adlarını anlamak için gereken olay öneklerinin listesini kapsamaz. Bu komutlar her iki listeyi yalnızca benzersiz değerlerle oluşturur. Diğer grep cevabı gibi -n bayrağını ekleyebilir ve sanırım satır numarasını alabilirsiniz. Ancak soru kodda nerede olduklarını sormadı. ~ _ ~
Burada ayrıca bir hile sayfası http://mikebywaters.wordpress.com/2012/07/23/magento-event-observer-list/
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Burada gözlemci olaylarının tam listesini bulabilirsiniz.
Bu hile sayfalarına bakın
https://www.nicksays.co.uk/magento-events-cheat-sheet-1-8/ http://rabee.me/codes/magento/cheatsheet/1.9/
Size yardımcı olacaktır.
Tüm backend + frontend etkinliklerinin listesini tek bir bağlantıda bulabilirsiniz.
http://www.magentocommerce.com/wiki/5_-_modules_and_development/reference/magento_events
Birinin güncellenmiş bir listeye ihtiyacı olursa, bunu güncel tutmaya çalışıyorum:
https://gist.github.com/digitalpianism/d8157c6b492238af2ed7809e5e3a134e
Tüm magento-1x olaylarını url’yi takip ederek bulabilirsiniz. https://magento2.atlassian.net/wiki/display/m1wiki/Magento+1.x+Events+Reference