当前位置: 首页 > 知识库问答 >
问题:

Joomla错误:#0无效的控制器类:

闾丘才哲
2023-03-14

全部的

我试图开发我的第一个Joomla组件,我在这里遵循MVC教程。

但是我不能进步太多,因为我得到了以下错误。

#0 Invalid controller class: AbcController

我已启用调试跟踪,但它在以下行中出现错误:

JControllerLegacy::getInstance()

不用说,我已经花了相当长的时间寻找解决办法,但没有找到任何解决办法

我正在做:

OS: Windows 8.1
PHP version: 5.5.6
MySQL version: 5.6.16
Joomla version: Joomla! 3.3.1 Stable

我采取了以下步骤:

>

  • 在扩展表中创建一个条目。

    插入到abc<代码>abc\U扩展(extension\u idname类型元素文件夹客户端id启用访问保护清单缓存参数自定义数据系统数据已签出已签出e排序状态)值(701,'com_abc','component','com_abc','',1,1,0,'{“name”:“com_abc”,“type”:“component”,“creationDate”:“2014年7月”,“author”:“abc项目”,“版权”:(C)2005-2014开源事宜。保留所有权利。\n\t”,“authorEmail”:admin@joomla.org“,”authorUrl:”www.abc.org“,”version:”1.0.0“,”description:”COM_abc_description“,”group:“}',”{”enabled:“0”,“show_date:”1“,”,”,”0,'0000-00-00:00:00:00',0,0);

    主要组件代码mysite/组件/com_abc/abc.php是;

    <?php
    // No direct access to this file
    defined('_JEXEC') or die('Restricted access');
    
    // import joomla controller library
    jimport('joomla.application.component.controller');
    
    // Get an instance of the controller prefixed by HelloWorld
    $controller = JControllerLegacy::getInstance('Abc');
    
    // Perform the Request task
    $input = JFactory::getApplication()->input;
    $controller->execute($input->getCmd('task'));
    
    // Redirect if set by the controller
    $controller->redirect();
    

    控制器代码mysite/component/com\u abc/controller。php是:

    <?php
    // No direct access to this file
    defined('_JEXEC') or die('Restricted access');
    
    // import Joomla controller library
    jimport('joomla.application.component.controller');
    
    /**
     * Hello World Component Controller
     */
    class AbcController extends JControllerLegacy
    {
    
    }
    

    视图文件mysite/component/com_abc/views/main/view。html。php包含:

    <?php
    // No direct access to this file
    defined('_JEXEC') or die('Restricted access');
    
    // import Joomla view library
    jimport('joomla.application.component.view');
    
    /**
     * HTML View class for the HelloWorld Component
     */
    class AbcViewMain extends JViewLegacy
    {
            // Overwriting JView display method
            function display($tpl = null) 
            {
                    // Assign data to the view
                    $this->msg = 'Hello World';
    
                    // Display the view
                    parent::display($tpl);
            }
    }
    

    模板文件mysite/component/com_abc/views/main/tmpl/default。php包含:

    <?php
    // No direct access to this file
    defined('_JEXEC') or die('Restricted access');
    ?>
    <h1><?php echo $this->msg; ?></h1>
    

    使用索引调用该视图。php?选项=com_abc

    如果你能帮助我解决这个问题,我将不胜感激。

    非常感谢。


  • 共有2个答案

    谭志用
    2023-03-14

    我也有同样的问题。检查所有类名,确保它们符合Joomla命名规则。您的控制器必须在站点文件夹中命名为AbcController。同时回顾一下你的观点,我认为它们也会给你带来问题

    江德海
    2023-03-14
    // import Joomla controller library
    jimport('joomla.application.component.controller');
    

    不确定您在那里做什么,没有这样的文件,新的和旧的控制器类都在各自的控制器文件夹中。但它们都是自动加载的,所以这不是你的问题。

    更重要的是,我建议您在控制器中放入一些代码,特别是设置组件默认视图的显示方法。看看任何核心组件,你就会明白我的意思。正如它在JControlllerLegacy::display doc块中所说:

    • 在大多数情况下,此功能作为默认实现提供
     类似资料:
    • 我正试图在Google play console上上传android应用程序的新版本,但当我选择该应用程序时,它会告诉我:“出现意外错误。请稍后再试。” 没有提供其他信息,3天前有效。我这边有什么问题吗,或者谷歌只是以某种方式破坏了他们的界面? (我在unbuntu 18上使用google chrome)

    • 我正在为Joomla开发定制组件。 通过添加自定义规则,我在验证字段方面做得很好。但若输入的值并没有通过我的验证,它将给出错误为“无效字段:我的字段名” 我想用我自己的信息来代替它。 我知道我可以使用JText::_('LANGUAGE_STRING')。但是我不确定我需要在哪里添加它。 我有一个名为“validemails”的自定义规则,它在客户端和服务器端验证中都返回false。 我的客户端验

    • 我收到以下错误,我不确定为什么,因为我直接从模板中运行代码。有人在堆栈跟踪中看到了我没有看到的东西吗?它贴在下面。 “/Cfia中的服务器错误。网状物MVC模板。示例的应用。 远程服务器返回错误:(404)未找到。 描述:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。 异常详细信息:System. Net. WebException:远程服

    • 当我在Kubuntu 17.04上使用Ionic 3安装了Java8时,我在签署一个Ionic android apk时遇到了这个错误 我得到的错误是: java版本 我已经安装了Android Studio,它运行良好,我测试了应用程序源代码,它在模拟器上运行没有问题。

    • 问题内容: 这是一个很长的路,但是以前有人见过这个错误吗?我正在尝试使用express,angular和mongoDB添加“ Transporters”。每当我访问由transporters控制器控制的页面时,都会收到此错误: 运输者控制器如下所示: 在我看来,我调用该列表并创建方法。他们产生上述错误 我从ng:areq的有角文档中得到了这个,尽管仍然不知道发生了什么 AngularJS经常断言,

    • 可能的异常 关于 FreeMarker 发生的异常,可以分为如下几类: 当配置 FreeMarker 时发生异常:典型地情况,就是在应用程序初始化时, 仅仅配置了一次 FreeMarker。在这个过程中,异常就会发生, 从 FreeMarker 的API中,我们可以很清楚的看到这一点... 当加载和解析模板时发生异常:调用了 Configuration.getTemplate(...) 方法, F