2013-01-04 40 views
1

當訪客用戶已經添加地址時,我必須從步驟1(選擇結賬方法)移至發貨方式步驟。我已經在方法saveCheckoutMethod的覆蓋類Mage_Checkout_Model_Type_Onepage中嘗試了以下代碼。然而,這是行不通的,客人去帳單地址步驟,但消息「設置步shipping_method。」。打印到Magento日誌。有沒有什麼辦法可以直接進入運輸方法步驟並以編程方式跳過兩個地址步驟?Magento在結賬時跳過兩步

public function saveCheckoutMethod($method) 
{ 
    if (empty($method)) { 
     return array('error' => -1, 'message' => $this->_helper->__('Invalid data.')); 
    } 

    $this->getQuote()->setCheckoutMethod($method)->save(); 

    $quote = $this->getQuote(); 
    if($quote->getBillingAddress()->validate() && $quote->getShippingAddress()->validate()) 
    {   
     $this->getCheckout() 
      ->setStepData('billing', 'complete', false) 
      ->setStepData('shipping', 'complete', false) 
      ->setStepData('shipping_method', 'allow', true); 
     Mage::log("Setting step shipping_method."); 
    } 
    else 
    { 
     $this->getCheckout()->setStepData('billing', 'allow', true); 
    } 

    return array(); 
} 
+0

轉到與此http://stackoverflow.com /問題/ 1718293 /鏈接到一個特定的步在-onepage結帳。要保留結帳步驟,請使用cookie。 – 2013-01-08 06:58:14

回答

1

您可以在Mage_Checkout_OnepageController::saveBillingAction()方法來看看,還有你怎麼能跳到另一步驟的例子(它跳過送貨地址步驟)

} elseif (isset($data['use_for_shipping']) && $data['use_for_shipping'] == 1) { 
    // Here you can specify step name 
    $result['goto_section'] = 'shipping_method'; 

    $result['update_section'] = array(
     'name' => 'shipping-method', 
     'html' => $this->_getShippingMethodsHtml() 
    ); 

    $result['allow_sections'] = array('shipping'); 
    $result['duplicateBillingInfo'] = 'true'; 
+0

我嘗試過,但我似乎沒有在方法Mage_Checkout_OnepageController :: saveMethodAction()中工作,它將轉到下一步(帳單地址)而不是發貨方法。我已經檢查過覆蓋控制器實際上是通過添加記錄行來覆蓋控制器來運行的。 – newbie