私のオブザーバー関数では、そのようなイベントによって渡される変数を取得します。
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
}
sth
がオブジェクトの場合、そのメソッドを呼び出すことで変更できます。しかしsth
、それが単純な文字列である場合、どのように変更できますか?私は成功せずに以下を試しました:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
$observer->getEvent()->setSth('test');
$observer->setSth('test');
}
一部のイベントは文字列を変更できるトランスポートオブジェクトも渡すことを学びました(ありがとうAlex)が、イベントpage_block_html_topmenu_gethtml_after
はそうではありません。それで、なにかお手伝いできますか?
問題のイベントは次のようにディスパッチされ、$ htmlを変更します。
$html = $this->_getHtml($this->_menu, $childrenWrapClass);
Mage::dispatchEvent('page_block_html_topmenu_gethtml_after', array(
'menu' => $this->_menu,
'html' => $html
));