1

配送はそれに基づいて計算されるため、Customer_Address に作成された「District」属性があります。この属性は私のチェックアウトに完全に表示され、ユーザーはいくつかのオプションから問題なく選択できます。

ただし、チェックアウト時に、私のクラスの collectRates() メソッドは、ユーザーがチェックアウトするために選択したオプションに関する情報を含む「Mage_Shipping_Model_Rate_Request」を受け取ります。この時点で、ユーザーが District 値として設定したものを取得してそれに基づいて送料を計算する方法が必要ですが、Mage_Shipping_Model_Rate_Request から情報を取得できないようです。

そのクラスに属性を追加して後で取得する方法はありますか? または、他の方法でその値を取得する必要がありますか?

あなたが私に与えることができるどんな助けも非常に役に立ちます!

ありがとう。

4

1 に答える 1

1

あなたはすでにこれを解決したと思います...

とにかく、私は同じ問題を抱えていて、このように解決しました:

RewriteMage_Sales_Model_Quote_AddressMage_Shipping_Model_Shipping、これらは行うクラスです$request = Mage::getModel('shipping/rate_request');

したがって、次のようになります。

class MyCompany_MyModule_Model_Quote_Address extends Mage_Sales_Model_Quote_Address{

public function requestShippingRates(Mage_Sales_Model_Quote_Item_Abstract $item = null)
{
    /** @var $request Mage_Shipping_Model_Rate_Request */
    $request = Mage::getModel('shipping/rate_request');

    // add custom attribute
    $request->setDestCustom($this->getCustomAddressAttribute());
    ...
}
}

class MyCompany_MyModule_Model_Shipping extends Mage_Shipping_Model_Shipping{

    public function collectRatesByAddress(Varien_Object $address, $limitCarrier = null)
    {
        /** @var $request Mage_Shipping_Model_Rate_Request */
        $request = Mage::getModel('shipping/rate_request');
        ...

        // add custom attribute
        $request->setDestCustom($address->getCustomAddressAttribute());
     }
}
于 2011-11-24T22:06:14.813 に答える