1

ゲストユーザーがすでに住所を追加している場合、ステップ 1 (チェックアウト方法の選択) から配送方法のステップに移動する必要があります。メソッド saveCheckoutMethod のオーバーライドされたクラス Mage_Checkout_Model_Type_Onepage で次のコードを試しました。ただし、これは機能していません。ゲストは請求先住所のステップに移動しますが、「設定ステップ shipping_method」というメッセージが表示されます。Magento ログに出力されます。配送方法のステップに直接進み、プログラムで 2 つの住所ステップをスキップする方法はありますか?

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();
}
4

1 に答える 1

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';
于 2013-01-04T12:18:27.320 に答える