Можно ли перенаправить браузер на n-й шаг в одной странице проверки? Если да, то как это сделать?
Я работаю над платежным модулем и имею какое-то действие «отменить», которое я хотел бы вернуть пользователю на этапе проверки, где вы выбираете способ оплаты.
В настоящее время я возвращаю пользователя на первый этап проверки следующим образом:
$this->_redirect('checkout/onepage', array('_secure'=>true));
Другая проблема заключается в том, что я не работаю все время, в некоторых браузерах мне бы не хотелось называть подобные работы «иногда». Это то, что известно и / или принято? У меня очень мало фактической информации об этом, но у меня были жалобы от клиентов об этом поведении. Как правило, они не дают мне никаких подробностей, поэтому это своего рода тупик.
В PHP
$step = Mage::app()->getRequest()->getParam('step'); $stepCodes = array('billing', 'shipping', 'shipping_method', 'payment', 'review'); if (($step) && (in_array($step,$stepCodes)) && ($this->getActiveStep() == 'billing')) { $checkout = Mage::getSingleton('checkout/type_onepage'); $checkout->saveBilling(Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->toArray(),false); $checkout->saveShipping(Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->toArray(),false); $checkout->saveShippingMethod(Mage::getSingleton('checkout/session')->getQuote()->getShippingAddress()->getShippingMethod()); $activestep = Mage::app()->getRequest()->getParam('step'); } else if($this->getActiveStep()) { $activestep = $this->getActiveStep(); }
В javascript
accordion.openSection('opc-<?php /* edit */ echo $activestep; ?>');
Извините за то, что я не понимаю. Откройте шаблон для страницы проверки одной страницы. Это приложение / дизайн / frontend / default / default / template / checkout / onepage.phtml В файле add
<?php //if (your cancel condition) { echo '<script type="text/javascript"> checkout.gotoSection(\'checkout-step-review\'); </script>'; } ?>
Это приведет пользователя к шагу, в котором вы нуждаетесь. Вы должны решить условие (условия), по которому пользователь переходит к этапу.
Я хотел сделать то же самое, но не мог понять, как сделать проверку одной страницы открытой на этапе оплаты.
В конце концов, я использовал jQuery и ajax-вызов, чтобы я мог вызвать код javascript после смены страницы:
jQuery('body').load(failure, {}, function () { // set the magento onepage checkout accordion to the payment section checkout.gotoSection('payment'); });
Рик ссылается на то, что «шаги» в контроле – это не RESTful, а Ajaxified шаги, все они находятся на одной странице, вертикальный аккордеон – это, по сути, всего лишь набор делений, управляемых функцией javascript. Вы должны установить javascript на правильный шаг, как он заявил.