TYPO3 Composer в режиме PSR-4 без загрузки классов - PullRequest
6 голосов
/ 07 октября 2019

У меня есть расширение, расположенное под ext/my_ext. Мой viewhelper находится в /ext/my_agarar_template/Classes/ViewHelpers/TestViewHelper.php.

, когда я пытаюсь вызвать мой viewhelper, мой шаблон говорит, что мой класс не существует.

Мой шаблон выглядит так:

{namespace p=ext\my_ext\ViewHelpers}
h1>ViewHelper-Test</h1>
<p><p:HelloWorld /></p>

Вот мое сообщение об ошибке:

Упс, произошла ошибка! Ошибка разбора жидкости в шаблоне Standard_action_my_ext_slide_db2750e6ca45c0832d4fc312cf0618afbe9329d0, строка 11 в символе 5. Ошибка: не удалось разрешить ViewHelper "". Основываясь на вашем правописании, система загрузит класс "ext \ my_ext \ ViewHelpers \ TestViewHelper", однако этот класс не существует. (код ошибки 1407060572). Исходный блок шаблона: дополнительная информация об этой ошибке может быть доступна в Интернете.

Я загружаю ее через Composer, и мой PSR-4 выглядит следующим образом:

"autoload": {
    "psr-4": {
      "myext\\MyExt\\": "web/typo3conf/ext/my_ext/Classes"
    }
}

Не знаюзнаю, почему мои занятия не загружаются.

Надеюсь, кто-нибудь может мне помочь,

заранее спасибо.

1 Ответ

1 голос
/ 08 октября 2019

Как уже упоминалось, ваш раздел автозагрузки выглядит странно в composer.json. Тем не менее, ваша автозагрузка, кажется, работает, в противном случае вы бы, вероятно, не зашли так далеко, я думаю.

Я бы проверил следующее:

  • проверьте раздел автозагрузки composer.json
  • проверка правописания имен файлов и классов: класс ViewHelper должен находиться в Classes / ViewHelpers и должен иметь одинаковое имя файла + имя класса HelloWorldViewHelper.php и класс HelloWorldViewHelper (это выглядит нормально из вашего примера кода)
  • правильно ли пространство имен в классе ViewHelper?
  • просто чтобы быть уверенным: допустим ли код вашего шаблона XML? (в h1 отсутствует '<') </li>
  • почему класс называется TestViewHelper, но имя HelloWorld? Должно быть HelloWorldViewHelper и <p:helloWorld>. Следите за прописными и строчными буквами.
  • очистите весь кэш (снова) и дамп автозагрузки (снова) composer dump-autoload
  • вы можете проверить файл vendor / composer / autoload_psr4.php, чтобы увидеть,отображение пространства имен на имя файла является правильным.

В общем, я бы держался подальше от клавиш расширения с подчеркиванием ('_'). Это также рекомендуется в документации . Дело в том, что написание, используя правильные прописные и строчные буквы, имя поставщика или нет и т. Д., Может быть достаточно сложным. Использование подчеркивания в ключах расширения делает это еще более сложным. Не проблема, если вы знаете правила или знаете, где искать, но создаете ненужные трудности для начинающих.

Совет: посмотрите в bootstrap_package . Он имеет подчеркивание в имени и содержит ViewHelpers.

...