У своїй функції спостереження я отримую змінну, передану подібно до такої події:
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');
}
Я щойно дізнався, що деякі події також передають транспортний об’єкт, в якому рядок можна змінити (дякую Алексу ), але подія 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
));