magento - 单击 magento 购物车上的编辑按钮时会调用哪些观察者?

标签 magento

我已经创建了一个观察者,在编辑按钮点击事件发生之前。
使用这个我可以改变选择框的值

最佳答案

要调用观察者,应该存在两件事,一个事件和一个 $observer它监听该事件。要在事件上设置观察者,只需使用 google,您就会了解如何操作。

如果你想调试你的观察者,你可以观察两个重要的方法来了解发生了什么。第一个是 Mage_Core_Model_App#dispatchEventapp/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#_callObserverMethodapp/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/

相关文章:

docker - docker上magento2的Elasticsearch设置给出 “no alive nodes”错误

mysql - 发送 OneSignal 通知导致服务器崩溃

php - magento资源中的version和data_version有什么区别?

php - Magento:两个模块可以扩展相同的核心模型吗?

Magento Community Edition 1.9.2 更新失败 - 列表 : TLSv1 中的未知密码

html - 如何去掉页脚中的空格

magento - 如何在 Magento 的 Cms 页面中放置登录表单?

magento - Magento:重写 block 不起作用

php - Magento 1.9.1 Cron 未运行

php - Magento 中的补丁文件