Magento如何停止/结账/ onepage / success /重定向

时间:2011-03-24 09:59:23

标签: magento redirect

我需要设置Magento订单成功页面/checkout/onepage/success/的样式,但是因为它在没有订单会话时重定向我无法刷新页面来检查我的更改!

任何人都知道如何暂时停止此重定向以进行测试?

6 个答案:

答案 0 :(得分:25)

您可以更改/app/code/core/Mage/Checkout/controllers/OnepageController.php文件。修改successAction,如下所示:

 public function successAction()
    {
       /*
        $session = $this->getOnepage()->getCheckout();
        if (!$session->getLastSuccessQuoteId()) {
            $this->_redirect('checkout/cart');
            return;
        }

        $lastQuoteId = $session->getLastQuoteId();
        $lastOrderId = $session->getLastOrderId();
        $lastRecurringProfiles = $session->getLastRecurringProfileIds();
        if (!$lastQuoteId || (!$lastOrderId && empty($lastRecurringProfiles))) {
            $this->_redirect('checkout/cart');
            return;
        }

        $session->clear();
        */


        $this->loadLayout();
        $this->_initLayoutMessages('checkout/session');
        Mage::dispatchEvent('checkout_onepage_controller_success_action', array('order_ids' => array($lastOrderId)));
        $this->renderLayout();
    }

记得在完成后删除评论!

答案 1 :(得分:3)

您可以使用以下代码停止刷新页面后的结帐成功页面重定向,以进行样式和测试:

转到此文件:

vendor/magento/module-checkout/Controller/Onepage/Success.php

并注释第22行

//$session->clearQuote();

现在,您将无需刷新即可刷新和调试成功页面。

答案 2 :(得分:1)

我建议用以下代码替换你的successAction:

/**
 * Order success action
 */
public function successAction()
{

    $session = $this->getOnepage()->getCheckout();        

    $session->setLastSuccessQuoteId(20);  // <<< add your order entity ID
    $session->setLastQuoteId(20);  // <<< add your order entity ID
    $session->setLastOrderId(20);  // <<< add your order entity ID

    if (!$session->getLastSuccessQuoteId()) {
        $this->_redirect('checkout/cart');
        return;
    }

    $lastQuoteId = $session->getLastQuoteId();
    $lastOrderId = $session->getLastOrderId();
    $lastRecurringProfiles = $session->getLastRecurringProfileIds();
    if (!$lastQuoteId || (!$lastOrderId && empty($lastRecurringProfiles))) {
        $this->_redirect('checkout/cart');
        return;
    }

    #$session->clear();  // <<< comment it

    $this->loadLayout();
    $this->_initLayoutMessages('checkout/session');
    Mage::dispatchEvent('checkout_onepage_controller_success_action', array('order_ids' => array($lastOrderId)));
    $this->renderLayout();
}

此致

答案 3 :(得分:1)

虽然代码更改可能是需要的,但有一个专门针对此的扩展:

https://www.yireo.com/blog/1672-testing-the-magento-checkout-success-page

披露:我绝不是编码器/开发者,因此扩展路线对我很有吸引力(尽管我很乐意进行这些更改)。

答案 4 :(得分:1)

如果有人在为 Magento 2 搜索相同的解决方案,以便在页面重新加载后停止从成功页面重定向 - 这里是:

用于调试的

快速且脏的解决方案:

  1. 打开/vendor/magento/module-checkout/Controller/Onepage/Success.php
  2. 注释掉代码
  3. /* if (!$this->_objectManager->get('Magento\Checkout\Model\Session\SuccessValidator')->isValid()) { return $this->resultRedirectFactory->create()->setPath('checkout/cart'); } $session->clearQuote(); */

    使用模块的正确解决方案可以在https://gielberkers.com/style-checkoutonepagesuccess-page-magento-2/

    找到

答案 5 :(得分:0)

Firefox会让你禁用HTTP重定向,但你可能不得不暂时破解控制器,让你无论如何都能留在页面上。