检查管理员是否正在编辑订单?

时间:2011-12-28 18:50:20

标签: magento

我的自定义送货模块失败,因为在后端编辑订单时无法获得销售报价。这是我使用的代码:

class Mymodule_Model_Mycarrier_Customrate 
    extends Mage_Shipping_Model_Carrier_Abstract
        implements Mage_Shipping_Model_Carrier_Interface
{
    public function collectRates(Mage_Shipping_Model_Rate_Request $request)
    {
        $quote = Mage::getSingleton('checkout/type_onepage')->getQuote();

我需要获取当前报价,以便我可以访问地址信息。我正在发送需要街道地址的API请求。

现在如果在后端编辑订单,这显然会导致错误,因为结帐单例不再相关。相反,我得到这样的引用:

$quote = Mage::getSingleton('adminhtml/session_quote')->getQuote();

在我的collectRates()方法中,我需要确定要加载哪个单例。首先,我想问一下这是否是正确的做事方式,以及我对后端的检查是否足够:

$quote = Mage::getSingleton('checkout/type_onepage')->getQuote();

// If admin is editing an order, find the quote by admin session.
if(Mage::getSingleton('admin/session')->isLoggedIn()){
    $quote = Mage::getSingleton('adminhtml/session_quote')->getQuote();
}

我不希望这会在以后引起问题。如果我必须创建这样的解决方法,我也会觉得我可能使用了collectRates()方法错误。

1 个答案:

答案 0 :(得分:1)

Mage_Shipping_Model_Rate_Request对象已经可以通过$request->getDestStreet()等访问该地址......