0

我需要部分覆盖 OnePage 控制器的 indexAction。我正在尝试添加一种方式,以直接进入返回单页结帐的审核步骤-此时所有其他步骤都已完成,只是 Magento 的行为是重新开始!这也意味着对 onestep.phtml 的更改,但我还没有走远!

我的控制器覆盖工作正常。我可以在控制器上添加一个新操作,比如 reviewStepAction,但如果我将此作为简单的测试覆盖,则不会显示标准的单页结帐。我只有标准侧边栏的空白页:

public function reviewStepAction() {
  parent::indexAction();
}

我还尝试将 indexAction 复制并修改为我的操作函数,但仍然没有显示单页结帐。indexAction 的最后一部分是:

    $this->getOnepage()->initCheckout();
    $this->loadLayout();
    $this->_initLayoutMessages('customer/session');
    $this->getLayout()->getBlock('head')->setTitle($this->__('Checkout'));
    $this->renderLayout();

所以我猜它不起作用,因为 URL 是 ../checkout/onpegage/reviewstep 所以它试图加载一个“reviewstep”布局而没有找到一个。如何通过加载通常的 /checkout/onepage 布局来强制 reviewStepAction 完成?我正在使用Mage::getSingleton('checkout/opnepage),但这只是崩溃了。

我不能在我的操作结束时重定向到 checkout/onepage,因为这会调用标准 indexAction 并且我需要在 and 之间插入一些initCheckout东西renderLayout

谢谢。

4

1 回答 1

0

以下作品:

public function reviewStepAction()
{
    $this->loadLayout(array('default','checkout_onepage_index'));
    $this->getOnepage()->initCheckout();
    ...additional code...
    $this->_initLayoutMessages('customer/session');
    $this->getLayout()->getBlock('head')->setTitle($this->__('Checkout'));
    $this->renderLayout();
}

唯一需要注意的是,body 类设置为checkout-onepage-reviewstep而不是通常的checkout-onepage-index.

于 2013-08-23T16:40:40.333 回答