0

我正在使用 Magento 的 M2e 扩展。现在我想Ess_M2ePro_Adminhtml_ListingController在文件中调用类的方法app/code/community/Ess/M2ePro/controllers/Adminhtml/ListingController.php

但我不知道,如何。我无法创建对象或模型来访问类以使用这些方法。直接调用此控制器方法可能不是一个好主意,但在我的情况下(将关联的 magento 产品删除到 ebay 列表)需要调用此方法。

通常,这些操作是从 magento 后端调用的。我也尝试过创建一个 admin_html 会话,但目前我没有任何进一步的想法。

这是一个示例,它的外观如何。我正在使用常规的 PHP 代码,没什么特别的:

class Ess_M2ePro_Adminhtml_ListingController extends Ess_M2ePro_Controller_Adminhtml_MainController
{
    //#############################################

    protected function _initAction()
    {
        /** removed **/
    }

    protected function _isAllowed()
    {
        return Mage::getSingleton('admin/session')->isAllowed('m2epro/listings/listing');
    }

    //#############################################

    public function indexAction()
    {
     /** removed **/
    }

    //#############################################

    public function searchAction()
    {
       /** removed **/
    }

    public function searchGridAction()
    {
       /** removed **/
    }


    public function lockListingNowAction()
    {
        $listingId = (int)$this->getRequest()->getParam('id');
        $component = $this->getRequest()->getParam('component');

        $lockItemParams = array(
            'id' => $listingId,
            'component' => $component
        );

        $lockItem = Mage::getModel('M2ePro/Listing_LockItem',$lockItemParams);

        if (!$lockItem->isExist()) {
            $lockItem->create();
        }

        exit();
    }




}  

我正在寻找这样的东西:

$test = Mage::getModel('M2ePro/Ess_M2ePro_Adminhtml_ListingController')->lockListingNowAction();
4

1 回答 1

5

您不应该从其他控制器调用方法。特别是在您的情况下,当您exit在方法结束时。如果您在控制器中,则
可以使用该方法:_forward

$this->_forward($action = 'lockListingNowAction', $controller = 'adminhtml_listing', $module = 'M2ePro', $params = array('id'=>$id)) //controller name may be different

但最简洁的方法是将您需要的代码放在帮助程序中,并在两个控制器中从该帮助程序调用代码。

于 2013-10-21T10:38:13.623 回答