0

私はMagentoにモジュールを実行しています。私のモジュールには、magentoのCrosssellネイティブ機能と同じ機能があります。この製品グリッドがあり、ユーザーはいくつかのチェックボックスを選択して、この製品をメイン製品に関連付けます。大丈夫。

ただし、この製品の ID を保存するカスタム属性を作成し、Observer を「catalog_product_save_after」イベントに作成しました。

  <events>
        <catalog_product_save_after>
            <observers>
                <brindeproduto_save_product_data>
                    <type>singleton</type>
                    <class>brindeproduto/observer</class>
                    <method>saveProductTabData</method>
                </brindeproduto_save_product_data>
            </observers>
        </catalog_product_save_after>
    </events>

私の saveProductTabData では、リクエストに応じて ID でメインの製品をロードし、「1,2,3,4,5,6」のように、選択した製品の IDS をカスタム属性に配置します。

わかりましたが、 $product->save(); を実行すると エラーや例外なしで、ブラウザに無限の負荷がかかりました。オブザーバーのコードは単純です。

$product = Mage::getModel('catalog/product')->load($product_id);
//some logical Specific information that is not in question now.
$product->save();

これ以上何もない。

保存機能をデバッグして、興味深い結果を得ようとしました。Mage_Core_Model_Abstract 関数の save() で、コードの一部にダイスを配置し、すべてを取得します。このコードは、Magento 1.5 Community の関数保存行 330 の一部です。

    if ($dataCommited) {
        $this->_afterSaveCommit();
    }
    return $this;

関数の最後の行です。帰る前にダイを入れます。

    if ($dataCommited) {
        $this->_afterSaveCommit();
    }
    die('test');
    return $this;

私はダイを持っています。しかし、帰国前には何もありません。何が起こったのか知っている人もいますか?? これで5時間ロス。どんな助けでも大歓迎です。

4

1 に答える 1

2

オブザーバー(* _save_after)で保存を実行しないでください。

これにより、無限ループが発生します

于 2012-11-30T12:13:27.013 に答える