我试图在我的地址对象中使用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时,它也不起作用。
可能的探索途径。
-
你对
getAddress
的调用没有返回Mage_Sales_Model_Quote_Address
对象,或者返回一个地址对象的不同实例。 -
你对
setData('abc', 'abc')
的调用发生在Magento的代码执行之后,而不是第一次调用requestShippingRates
。 -
调用
getAddress
和执行requestShippingRates
之间的代码正在重新实例化或初始化地址对象。
根据你对Mage::register
的评论,我的钱在第二个。