最近気づいたこと、それについて知りたいです。
例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()すべきか?