我正在使用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();
}
}
Run Code Online (Sandbox Code Playgroud)
我正在寻找这样的东西:
$test = Mage::getModel('M2ePro/Ess_M2ePro_Adminhtml_ListingController')->lockListingNowAction();
Run Code Online (Sandbox Code Playgroud)
您不应该从其他控制器调用方法.特别是在您的情况下,当您exit在方法结束时.如果您在控制器中,则
可以使用该_forward方法:
$this->_forward($action = 'lockListingNowAction', $controller = 'adminhtml_listing', $module = 'M2ePro', $params = array('id'=>$id)) //controller name may be different
Run Code Online (Sandbox Code Playgroud)
但最干净的方法是在助手中获得所需的代码,并在两个控制器中调用该助手的代码.
| 归档时间: |
|
| 查看次数: |
7446 次 |
| 最近记录: |