通过ext_localconf.php注册类时,自动加载不起作用

时间:2019-01-11 11:14:01

标签: typo3 typo3-9.x

我遇到了课程不可用的问题。 我在扩展名下得到了下一个composer.json文件:

{
    "autoload": {
        "psr-4": {
            "Vendor\\MySitepackage\\": "Classes/"
        }
    }
}

现在我得到了一个EXT:my_sitepackage/Classes/Rendering/VideoRenderer.php类,其名称空间和名称类是正确的。

在我的ext_localconf.php下,我这样做:

<?php
defined('TYPO3_MODE') or die();

(function () {
    ........
    /** @var \TYPO3\CMS\Core\Resource\Rendering\RendererRegistry 
$rendererRegistry */
    $rendererRegistry = \TYPO3\CMS\Core\Resource\Rendering\RendererRegistry::getInstance();
    $rendererRegistry->registerRendererClass(\Vendor\MySitepackage\Rendering\VideoRenderer::class);

    ........
})();

但是,当我刷新缓存时,出现下一个错误:

[ InvalidArgumentException ]                                                                             
  The class "Vendor\MySitepackage\Rendering\VideoRenderer" you are trying to register is not available

我检查了所有名称类别,一切似乎都正确。

我应该在扩展程序中创建一个composer dump-autoload来加载info类吗?即使我这样做,它也会显示Generated autoload files containing 0 classes

我有点困惑为什么显示此错误。

1 个答案:

答案 0 :(得分:1)

如果未通过composer加载此扩展名,则其composer.json将被忽略。您必须将sitepackage扩展的psr-4信息放入根composer.json。不要忘记采用类似public/typo3conf/ext/my_sitepackage/Classes

的路径