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>

これが私の Observer クラス関数です。

public function duplicate1(Varien_Event_Observer $observer) {

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

    }

admin から製品を複製しようとすると、正しく duplicate1() 関数に到達します。私の問題は、$product が null であることです。イベントの商品が届きません。このような問題を抱えている人はいますか?

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 がないと機能しません。debugger に関しては、 HTTP Debugger を取得し、 BP を配置し、応答と疑わしいと思われるすべてのものを観察します。

于 2013-03-15T06:33:24.857 に答える