我最近发现了一些东西,对此感到很好奇。
例1:使用 getEvent()
在Mage_Core_Model_Locale
在setLocale()
方法中,分派事件:
Mage::dispatchEvent('core_locale_set_locale', array('locale'=>$this));
此事件的观察者bindLocale()
来自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;
}
如您所见,要检索语言环境,我们首先调用getEvent()
观察者。
示例2:不 getEvent()
在Mage_Wishlist_Block_Customer_Wishlist_Item_Options
在__construct()
方法中,分派事件:
Mage::dispatchEvent('product_option_renderer_init', array('block' => $this));
因此,我们同意示例1和2使用相同的语法。
但是,第二个示例的观察者initOptionRenderer()
来自Mage_Bundle_Model_Observer
public function initOptionRenderer(Varien_Event_Observer $observer)
{
$block = $observer->getBlock();
$block->addOptionsRenderCfg('bundle', 'bundle/catalog_product_configuration');
return $this;
}
如您所见,要检索块,我们不会调用getEvent()
观察者
题
- 为什么
getEvent()
在示例1中调用该方法?还是为什么getEvent()
在示例2中不调用它? - 该
getEvent()
方法的目的是什么? - 一种用途在哪里,一种用途
getEvent()
在哪里?