Na minha função de observador, recebo uma variável passada pelo evento assim:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
}
Se sth
for um objeto, posso alterá-lo chamando métodos nele. Mas como posso alterar sth
se é uma string simples? Eu tentei o seguinte sem sucesso:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
$observer->getEvent()->setSth('test');
$observer->setSth('test');
}
Acabei de saber que alguns eventos também passam um objeto de transporte no qual a string pode ser alterada (graças a Alex ), mas o evento page_block_html_topmenu_gethtml_after
não. Então o que eu posso fazer?
O evento em questão é despachado assim e eu quero alterar o $ html:
$html = $this->_getHtml($this->_menu, $childrenWrapClass);
Mage::dispatchEvent('page_block_html_topmenu_gethtml_after', array(
'menu' => $this->_menu,
'html' => $html
));
fonte