绕过控制器中的重写操作

Bypassing overriding actions in controllers

我安装了几个新模块,ajaxcartpro 和 saveforlater。 Saveforlater 在其控制器中调用 addAction() 操作。来自 mage_checkout_controller 的 addAction 正在被 ajaxcartpro 模块中的 addAction 覆盖。

我想知道是否有一种方法可以专门使用来自 mage_checkout_controller 的 addAction 操作,而不是来自 ajaxcartpro 的操作。

Saveforlater 控制器调用 addAction():

public function moveAction(){
    $saveforlater_item_id = Mage::app()->getRequest()->getParam('item');
    if( $saveforlater_item_id ){
        $saveforlater_item = Mage::getModel('saveforlater/item')->load( $saveforlater_item_id );
        $buy_request = unserialize( $saveforlater_item->getBuyRequest() );
        $params = $this->getRequest()->getParams();
        $this->getRequest()->setParams( $buy_request );
        $this->addAction();
        $saveforlater_item->delete();
    }
}

有什么方法可以更改 $this->addAction(); 行吗?从 mage_checkout_controller?

专门调用 addAction

是的。如果您的 class 扩展了 Mage_Checkout_CartController,您可以通过 parent:

调用它
parent::addAction();

如果你class没有直接扩展Mage_Checkout_CartController,但仍然是它的一个实例,那么你可以这样直接访问它:

Mage_Checkout_CartController::addAction();