Dans ma fonction d'observateur, j'obtiens une variable passée par l'événement comme ça:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
}
Si sth
est un objet, je peux le modifier en appelant des méthodes dessus. Mais comment puis-je modifier sth
s'il s'agit d'une simple chaîne? J'ai essayé ce qui suit sans succès:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
$observer->getEvent()->setSth('test');
$observer->setSth('test');
}
Je viens d'apprendre que certains événements passent également par un objet de transport dans lequel la chaîne peut être modifiée (merci Alex ), mais l'événement page_block_html_topmenu_gethtml_after
ne le fait pas. Alors qu'est-ce que je peux faire?
L'événement en question est distribué comme ceci et je veux modifier $ html:
$html = $this->_getHtml($this->_menu, $childrenWrapClass);
Mage::dispatchEvent('page_block_html_topmenu_gethtml_after', array(
'menu' => $this->_menu,
'html' => $html
));