Magento - 部分覆盖OnePage控制器的indexAction

时间:2013-08-23 12:29:48

标签: magento override action

我需要部分覆盖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();

所以我猜测它没有用,因为网址是../checkout/onpegage/reviewstep所以它试图加载" reviewstep"布局,而不是找到一个。如何通过加载常规/结帐/单页布局强制reviewStepAction完成?我使用了Mage::getSingleton('checkout/opnepage),但这只是崩溃了。

我无法在操作结束时重定向到checkout / onepage,因为这会调用标准indexAction,我需要在initCheckoutrenderLayout之间插入内容。

感谢。

1 个答案:

答案 0 :(得分: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();
}

只需注意,身体类设置为checkout-onepage-reviewstep而不是通常的checkout-onepage-index