En mi función de observador, obtengo una variable pasada por el evento así:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
}
Si sth
es un objeto, puedo alterarlo invocando métodos. Pero, ¿cómo puedo alterar sth
si es una cadena simple? Intenté lo siguiente sin éxito:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
$observer->getEvent()->setSth('test');
$observer->setSth('test');
}
Acabo de enterarme de que algunos eventos también pasan un objeto de transporte en el que se puede alterar la cadena (gracias Alex ), pero el evento page_block_html_topmenu_gethtml_after
no. ¿Entonces Que puedo hacer?
El evento en cuestión se envía de esta manera y quiero alterar $ html:
$html = $this->_getHtml($this->_menu, $childrenWrapClass);
Mage::dispatchEvent('page_block_html_topmenu_gethtml_after', array(
'menu' => $this->_menu,
'html' => $html
));
fuente