Автозагрузка не работает, когда класс зарегистрирован через ext_localconf.php - PullRequest
0 голосов
/ 11 января 2019

Я застрял с проблемой недоступности класса. Я получил следующий 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 внутри моего расширения для загрузки информационного класса? Даже если я это сделаю, там написано Generated autoload files containing 0 classes.

Я немного растерялся, почему отображается эта ошибка.

1 Ответ

0 голосов
/ 11 января 2019

, если это расширение не загружается через композитор, его composer.json игнорируется. Вы должны поместить информацию о psr-4 вашего расширения sitepackage в корневой каталог composer.json. не забудьте принять путь, который будет что-то вроде public/typo3conf/ext/my_sitepackage/Classes

...