我正在尝试实例化一个控制器并执行一些方法,但没有结果:(
jimport('joomla.application.component.controller');
$controller = JController::getInstance('com_shop');
$controller->my_method($arg1, $arg2);
有什么想法吗?
答案 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();