【问题标题】:“Could not analyse class: maybe not loaded or no autoloader?”“无法分析类:可能没有加载或没有自动加载器?”
【发布时间】:2026-02-18 12:25:02
【问题描述】:

我已将 Typo3 v6.2.15 更新到 7.6.15,并尝试将命名空间添加到自定义扩展。现在我在 LoginController 类上遇到错误:

无法分析类:“Tx_Verwaltung_Controller_LoginController” 可能没有加载或没有自动加载器?班级 Tx_Verwaltung_Controller_LoginController 不存在

我做了什么:

  • 在这些文件中将$_EXTKEY 替换为'DHW.' . $_EXTKEY:ext_localconf.php、ext_tables.php 示例:

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'DHW.' . $_EXTKEY,
        'login',
        array(
            'Login' => 'loginbox,logoutbox'
        ),
        array(      
            'Login' => 'loginbox,logoutbox'
        )
    );
    
  • 在 ext_emconfig.php 中添加了这个:

    array(
        'classmap' => array('Classes'),
        'psr-4' => array('DHW\\Verwaltung\\' => 'Classes')
    ),
    
  • 在 composer.json 中添加了这个:

    "autoload": {
        "psr-4": {
            "DHW\\Verwaltung\\": "Classes"
        }
    }
    
  • 在typo3conf/ext/verwaltung/Classes/LoginController.php 中添加命名空间

    namespace DHW\Verwaltung\Controller;
    
    class Tx_Verwaltung_Controller_LoginController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController { ... }
    
  • 在后端禁用和启用扩展。

  • 已清除后端缓存。
  • 已删除typo3temp 文件夹
  • 使用安装工具清除缓存。

【问题讨论】:

    标签: extbase typo3-7.6.x


    【解决方案1】:

    阅读后解决了这个问题: How do I bootstrap a plugin on TYPO3 CMS 6.0 with extbase?

    我必须在我的 Typoscript 中添加供应商名称:

        loginBoxWidget = USER
        loginBoxWidget {
            userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
            vendorName    = DHW
            pluginName = login
            extensionName = Verwaltung
            controller = Login          
            action = loginbox
    
            ... 
    

    之后我收到“致命错误:无法声明类”错误。将课程 Tx_Verwaltung_Controller_LoginController 重命名为 LoginController 后,一切正常。

    【讨论】: