这是我的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>
这是我的Observer类函数。
public function duplicate1(Varien_Event_Observer $observer) {
$product=$observer->getEvent()->getProduct();
/*
my logic is here
*/
}
当我尝试从管理员复制产品时,它正好适用于duplicate1()函数。 我的问题是,$ product为null。我无法从活动中获得产品。有人有这样的问题吗?
答案 0 :(得分: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
答案 1 :(得分:-1)
你必须放置产品ID,没有ID,它不会工作。说到调试器,获取HTTP调试器,放置BP,观察响应以及可能看起来可疑的所有内容。