Перенаправление в корзину при изменении адреса доставки
Я хочу перенаправить в корзину с одной страницы оформления заказа.
Когда клиент меняет почтовый индекс адреса доставки, я хочу перенаправить его на страницу корзины.
В этом я сопоставляю почтовый индекс выставления счетов и доставки, если он не совпадает с тем, который я хочу перенаправить на страницу корзины в Onepagecontroller.php Я изменяю это в методе сохранения:
if($pcode == 0){
$this->_redirect('checkout/cart');
}
Но это не перенаправление на страницу корзины, как я могу это сделать?
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');
не выполняется.