2

这是我的 config.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<!--
    Document   : config.xml
    Created on : July 26, 2012, 1:12 PM
    Author     : sanjeewani
    Description:
        Purpose of the document follows.
-->
<config>
    <modules>
        <Proporta_AmazonBarcode>
            <version>0.1.0</version>
        </Proporta_AmazonBarcode>
    </modules>
    <global>
        <events>
            <catalog_model_product_duplicate>
                <observers>
                    <proporta_amazonbarcode_observer>
                        <class>Proporta_AmazonBarcode_Model_Observer</class>
                        <method>duplicate1</method>
                    </proporta_amazonbarcode_observer>
                </observers>
            </catalog_model_product_duplicate>
        </events>
    </global>
</config>

这是我的观察者类函数。

public function duplicate1(Varien_Event_Observer $observer) {

      $product=$observer->getEvent()->getProduct();
/*
my logic is here
*/

    }

当我尝试从管理员复制产品时,它可以正常使用 duplicate1() 功能。我的问题是,$product 为空。我无法从活动中获得产品。有人有这样的问题吗?

4

2 回答 2

2

这是因为product不是事件上下文的键。如果您不确定上下文是什么,最好查看事件的调度位置[1]。在这种情况下,app/code/core/Mage/Catalog/Model/Product.php在方法中Mage_Catalog_Model_Product::duplicate()

    Mage::dispatchEvent(
        'catalog_model_product_duplicate',
        array('current_product' => $this, 'new_product' => $newProduct)
    );

所以,你可能想要做的是:

  $product = $observer->getEvent()->getCurrentProduct();

[1] 或使用调试器,放置断点并检查$observer

于 2013-03-15T06:52:24.957 回答
-1

您必须输入产品 ID ,没有 ID ,它将无法工作。当谈到调试器时,获取 HTTP Debugger ,放置 BP ,并观察响应和所有可能看起来可疑的东西。

于 2013-03-15T06:33:24.857 回答