Sesuatu yang saya perhatikan baru-baru ini dan saya ingin tahu tentang hal itu.
Contoh 1: penggunaan getEvent()
Di Mage_Core_Model_Locale
dalam setLocale()
metode, sebuah acara dikirim:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Pengamat untuk acara ini bindLocale()
berasal dariMage_Adminhtml_Model_Observer
public function bindLocale($observer)
{
if ($locale=$observer->getEvent()->getLocale()) {
if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) {
$locale->setLocaleCode($choosedLocale);
}
}
return $this;
}
Jadi seperti yang Anda lihat, untuk mengambil lokasi, pertama-tama kita memanggil getEvent()
pengamat.
Contoh 2: tanpa getEvent()
Di Mage_Wishlist_Block_Customer_Wishlist_Item_Options
dalam __construct()
metode, sebuah acara dikirim:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Jadi kami setuju bahwa sintaks yang sama digunakan untuk contoh 1 dan 2.
Namun, pengamat untuk contoh kedua ini initOptionRenderer()
dariMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
Dan seperti yang Anda lihat, untuk mengambil blok, kami tidak memanggil getEvent()
pengamat
Pertanyaan
- Mengapa
getEvent()
metode ini disebut dalam contoh # 1? Atau mengapagetEvent()
tidak disebut dalam contoh # 2? - Apa tujuan dari
getEvent()
metode ini? - Di mana satu harus digunakan
getEvent()
dan di mana seharusnya tidak menggunakannya?