Một cái gì đó tôi nhận thấy gần đây và tôi tò mò về nó.
Ví dụ 1: việc sử dụng getEvent()
Trong Mage_Core_Model_Locale
trong setLocale()
phương pháp, một sự kiện được gửi đi:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
Một người quan sát cho sự kiện này là bindLocale()
từMage_Adminhtml_Model_Observer
public function bindLocale($observer)
{
if ($locale=$observer->getEvent()->getLocale()) {
if ($choosedLocale = Mage::getSingleton('adminhtml/session')->getLocale()) {
$locale->setLocaleCode($choosedLocale);
}
}
return $this;
}
Vì vậy, như bạn có thể thấy, để lấy lại miền địa phương, trước tiên chúng ta gọi getEvent()
người quan sát.
Ví dụ 2: không có getEvent()
Trong Mage_Wishlist_Block_Customer_Wishlist_Item_Options
trong __construct()
phương pháp, một sự kiện được gửi đi:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
Vì vậy, chúng tôi đồng ý rằng cú pháp tương tự được sử dụng cho ví dụ 1 và 2.
Tuy nhiên, một người quan sát cho ví dụ thứ hai này là initOptionRenderer()
từMage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
Và như bạn có thể thấy, để lấy lại khối, chúng tôi không gọi getEvent()
cho người quan sát
Câu hỏi
- Tại sao
getEvent()
phương thức được gọi trong ví dụ # 1? Hoặc tại saogetEvent()
không được gọi trong ví dụ # 2? - Mục đích của
getEvent()
phương pháp là gì? - Nên sử dụng
getEvent()
ở đâu và không nên sử dụng ở đâu?