在joomla 3.1.1中实例化控制器

时间:2014-01-10 14:32:41

标签: php joomla

我正在尝试实例化一个控制器并执行一些方法,但没有结果:(

jimport('joomla.application.component.controller');
$controller = JController::getInstance('com_shop');
$controller->my_method($arg1, $arg2);

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这不起作用尝试:JControllerLegacy::getInstance('CONTROLLERNAME')假设您调用的控制器遵循命名约定

<COMPONENTNAME><Controller><CONTROLLERNAME>例如WeblinksControllerWeblink

答案 1 :(得分:0)

以下是从lender获取的控制器实例化代码。而且你不需要在Joomla 3扩展中使用jimport。 Joomla自动加载所有以J前缀开头的类。

<?php // No direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

//sessions
jimport( 'joomla.session.session' );

//load tables
JTable::addIncludePath(JPATH_COMPONENT.'/tables');

//load classes
JLoader::registerPrefix('Lendr', JPATH_COMPONENT);

//Load plugins
JPluginHelper::importPlugin('lendr');

//application
$app = JFactory::getApplication();

// Require specific controller if requested
if($controller = $app->input->get('controller','default')) {
  require_once (JPATH_COMPONENT.'/controllers/'.$controller.'.php');
}

// Create the controller
$classname  = 'LendrController'.$controller;
$controller = new $classname();

// Perform the Request task
$controller->execute();