Перенаправление в корзину при изменении адреса доставки


Я хочу перенаправить в корзину с одной страницы оформления заказа.

Когда клиент меняет почтовый индекс адреса доставки, я хочу перенаправить его на страницу корзины.

В этом я сопоставляю почтовый индекс выставления счетов и доставки, если он не совпадает с тем, который я хочу перенаправить на страницу корзины в Onepagecontroller.php Я изменяю это в методе сохранения:

if($pcode == 0){

        $this->_redirect('checkout/cart');
}

Но это не перенаправление на страницу корзины, как я могу это сделать?

Author: Newbie, 2015-11-05

1 answers

Magento сохраняет все данные этапа оформления заказа с помощью AJAX.

В Magento есть функция возврата на страницу корзины всякий раз, когда запрос AJAX переходит в состояние onFailure во время любого из этапов оформления заказа.

.....
method:'get',
            onFailure:this.ajaxFailure.bind(this),
            onComplete: function(){
 ....
.....
ajaxFailure: function(){
        location.href = this.failureUrl;
    },
......

Ответ AJAX вызывает onFailure() function whenever a header response is Внутреннюю ошибку сервера HTTP/1.1 500`.

 $this->getResponse()->clearHeaders()->setHeader('HTTP/1.1', '500 Internal Server Error')->sendResponse();
 exit;

Или используйте 403 (в разрешении отказано):

$this->getResponse()->clearHeaders()->setHeader('HTTP/1.1', '403 Forbidden')->sendResponse()->sendResponse();
exit;

...Или 503 (служба недоступна):

$this->getResponse()->clearHeaders()->setHeader('HTTP/1.1', '503 Service Unavailable')->sendResponse();
exit;

В вашем случае вам необходимо отправить код ответа заголовка 500/403/503, чтобы убедиться, что прототип AJAX onFailure называется.

saveShipping() функция сохраняет данные о доставке с помощью AJAX, а ответом является содержимое JSON.

По получении этого ответа проверка перейдет к следующему шагу.

Это означает, что $this->_redirect('checkout/cart'); не выполняется.

 2
Author: Amit Bera, 2016-01-18 22:11:33