Trong hàm quan sát của tôi, tôi nhận được một biến được truyền bởi sự kiện như thế:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
}
Nếu sth
là một đối tượng, tôi có thể thay đổi nó bằng cách gọi các phương thức trên nó. Nhưng làm thế nào tôi có thể thay đổi sth
nếu nó là một chuỗi đơn giản? Tôi đã thử những điều sau đây mà không thành công:
public function observerFunc(Varien_Event_Observer $observer)
{
$sth = $observer->getEvent()->getSth();
$observer->getEvent()->setSth('test');
$observer->setSth('test');
}
Tôi mới biết rằng một số sự kiện cũng vượt qua một đối tượng vận chuyển trong đó chuỗi có thể được thay đổi (cảm ơn Alex ), nhưng sự kiện page_block_html_topmenu_gethtml_after
thì không. Vậy tôi có thể làm gì?
Sự kiện trong câu hỏi được gửi đi như thế này và tôi muốn thay đổi $ html:
$html = $this->_getHtml($this->_menu, $childrenWrapClass);
Mage::dispatchEvent('page_block_html_topmenu_gethtml_after', array(
'menu' => $this->_menu,
'html' => $html
));