调用未定义的方法JController :: getInstance()

时间:2013-07-27 19:44:46

标签: php web joomla

我似乎已经尝试了一切。我正在尝试学习如何创建一个新组件,目前我的文件夹结构看起来像这样(请注意组件安装)。

这是我文件夹结构的图片:

enter image description here

我已经关闭了一些,因为我发现它是相关的,但如果您需要查看其中的内容,请告诉我。

如上所述,组件安装没有问题。但是,当我尝试访问它时,我收到以下错误:

Fatal error: Call to undefined method JController::getInstance() in /home/marcrasm/public_html/Joomla/administrator/components/com_helloworld/helloworld.php on line 13

现在它所引用的文件就是这个:

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

jimport('joomla.application.component.controller');

$doc = JFactory::getDocument();
$doc->addScript("/components/com_helloworld/js/jquery.js");
$doc->addScript("/components/com_helloworld/js/com_helloworld_script.js");
$doc->addStyleSheet("/components/com_helloworld/css/com_helloworld_layout.css");

// gets the instance of the controller
// Get an instance of the controller prefixed by HelloWorld
$controller = JController::getInstance('HelloWorld');

// Perform the Request task
$input = JFactory::getApplication()->input;
$controller->execute($input->getCmd('task'));

// Redirect if set by the controller
$controller->redirect();

我知道这很难说但是有谁知道问题可能是什么?

3 个答案:

答案 0 :(得分:21)

请检查Joomla版本

在3.X

   $controller  = JControllerLegacy::getInstance('HelloWorld');

在2.X

   $controller = JController::getInstance('HelloWorld');

答案 1 :(得分:5)

您没有说明您的版本,但除非您使用新的MVC构建,否则您可能需要J3的JControllerLegacy。 JController没有getInstance()方法,但JControllerLegacy确实看到了github.com/joomla/joomla-cms/blob/master/libraries/joomla/controller

答案 2 :(得分:0)

错误消息显示JController没有静态方法getInstance()