我已经创建了一个观察者,在编辑按钮点击事件发生之前。
使用这个我可以改变选择框的值
最佳答案
要调用观察者,应该存在两件事,一个事件和一个 $observer
它监听该事件。要在事件上设置观察者,只需使用 google,您就会了解如何操作。
如果你想调试你的观察者,你可以观察两个重要的方法来了解发生了什么。第一个是 Mage_Core_Model_App#dispatchEvent
在 app/code/core/Mage/Core/Model/App.php:1271
public function dispatchEvent($eventName, $args)
{
$eventName = strtolower($eventName);
foreach ($this->_events as $area=>$events) {
// (...)
这是所有事件都停止的地方。在开发过程中,您可以查看
$eventName
通过在此处设置断点(我最喜欢的),将值记录到文件中,甚至变得非常脏和简单 echo
看看引擎盖下。public function dispatchEvent($eventName, $args)
echo "BlaBlaBla"; // just used to find the printed lines in view source code of browser
print_r($eventName);
$eventName = strtolower($eventName);
foreach ($this->_events as $area=>$events) {
// (...)
请记住,您正在编辑核心文件,这只是为了探索和查找事件名称,然后去掉这些行。
实际完成这项工作的第二种方法是
Mage_Core_Model_App#_callObserverMethod
在 app/code/core/Mage/Core/Model/App.php:1338
/**
* @param object $object
* @param string $method
* @param Varien_Event_Observer $observer
* @return Mage_Core_Model_App
* @throws Mage_Core_Exception
*/
protected function _callObserverMethod($object, $method, $observer)
{
if (method_exists($object, $method)) {
$object->$method($observer);
} elseif (Mage::getIsDeveloperMode()) {
Mage::throwException('Method "'.$method.'" is not defined in "'.get_class($object).'"');
}
return $this;
}
$object->$method($observer)
将在对象上调用观察者方法,就像在设置断点、记录到文件甚至 echo
之前一样看看幕后发生了什么。首先找到你感兴趣的事件,然后尝试将事件添加到观察者中,如果不行,可以使用第二种方法进行调试。
而且,是的...... Magento 从来都不是简单的。
关于magento - 单击 magento 购物车上的编辑按钮时会调用哪些观察者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52071282/