2013-08-23 56 views
0

我需要部分覆蓋OnePage控制器的indexAction。我試圖添加一個方法,直接返回到onepage checkout的審覈步驟 - 此時所有其他步驟都已完成,這只是Magento的行爲重新開始!這也意味着對onestep.phtml的改變,但是我還沒有做到!Magento - 部分覆蓋OnePage控制器的indexAction

我的控制器覆蓋工作正常。我可以在控制器上添加一個新動作,比如說reviewStepAction,但是如果我將它作爲測試的簡單覆蓋,則不會顯示標準onepage結帳。我得到的空白頁只是標準的側邊欄:

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

我還試圖複製和修改的indexAction我的動作功能,但仍沒有得到onepage結賬時顯示。的indexAction的最後一部分是:

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

所以我猜它不工作,因爲URL是../checkout/onpegage/reviewstep所以它試圖加載了「reviewstep」佈局,而不是找到一個。我如何強制reviewStepAction完成加載通常/結帳/ onepage佈局?我tred使用Mage::getSingleton('checkout/opnepage),但只是墜毀。

我不能只是在我的動作結束時重定向到checkout/onepage,因爲那樣會調用標準的indexAction,我需要在initCheckoutrenderLayout之間插入一些東西。

謝謝。

+0

有人嗎?讓我總結一下:我已經向Onepage控制器添加了一個動作,並且在動作結束時我要渲染正常的onepage結帳頁面。真的很容易說,但看似不可能做到! –

回答

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