0

Address オブジェクトで setData を使用しようとしています。コードは次のとおりです。

//code inside another class
$this->getAddress()->setData('abc', 'abc')->collectShippingRates()->save();

class Mage_Sales_Model_Quote_Address extends Mage_Customer_Model_Address_Abstract
{
...
    public function collectShippingRates()
    {
        ...

        $found = $this->requestShippingRates();
        ...

        return $this;
    }
    public function requestShippingRates(Mage_Sales_Model_Quote_Item_Abstract $item = null)
    {
        //I knkow it's getting here, because when I echo 'blablabla', it works.
        //When I use $this->setData('abc', 'abc') here, the code bellow print 'abc'
        //The problem is when I use setData outside the class
        echo $this->getData('abc');exit; //prints nothing
        ...
    }
...
}

ご覧のとおり、Address モデルで setData を使用していますが、クラス内では getData は何も返しません。
誰かが何が起こっているのか説明してもらえますか?
Mage::register を使おうとしてもうまくいきません。

4

1 に答える 1

1

可能な探査手段。

  1. への呼び出しがオブジェクトをgetAddress返していないMage_Sales_Model_Quote_Addressか、アドレス オブジェクトの別のインスタンスを返しています。

  2. への呼び出しsetData('abc', 'abc')は、への最初の呼び出しよりも後で Magento のコード実行で発生しrequestShippingRatesます。

  3. getAddressの呼び出しと実行の間のコードはrequestShippingRates、アドレス オブジェクトを再インスタンス化または初期化しています。

に関するあなたのコメントによるとMage::register、私のお金は 2 番目です。

于 2012-12-28T20:17:16.380 に答える