W mojej funkcji obserwatora otrzymuję zmienną przekazywaną przez takie zdarzenie:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
}
Jeśli sth
jest obiektem, mogę go zmienić, wywołując na nim metody. Ale jak mogę zmienić, sth
jeśli jest to prosty ciąg? Próbowałem następujących bez powodzenia:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
$observer->getEvent()->setSth('test');
$observer->setSth('test');
}
Właśnie dowiedziałem się, że niektóre zdarzenia przechodzą również obiekt transportowy, w którym można zmienić ciąg (dzięki Alex ), ale zdarzenie page_block_html_topmenu_gethtml_after
nie. Więc co mogę zrobić?
Wydarzenie, o którym mowa, jest wysyłane w ten sposób i chcę zmienić $ html:
$html = $this->_getHtml($this->_menu, $childrenWrapClass);
Mage::dispatchEvent('page_block_html_topmenu_gethtml_after', array(
'menu' => $this->_menu,
'html' => $html
));
źródło