Есть ли способ использовать методы PageRenderer на странице с кэшируемыми и не кэшируемыми действиями extbase? - PullRequest
1 голос
/ 13 июня 2019

Если страница содержит два плагина Extbase и один плагин вызывает кэшируемое действие, а другое - не кэшируемое действие, то вызовы метода PageRenderer для добавления файлов CSS и JavaScript не работают. Сообщение об ошибке отсутствует, но файлы не добавляются в разметку HTML.

Я попытался поместить вызовы метода PageRenderer в методы контроллера initializeAction, initializeView и listAction. Это не имеет значения.

Если действия обоих плагинов являются кэшируемыми или не кэшируемыми, вызовы методов PageRenderer работают как положено.

Если я сделаю кэшируемое действие не кэшируемым, и наоборот, вызовы метода PageRenderer также не будут работать. Не важно, какое действие является кэшируемым или не кэшируемым.

Я попытался использовать современный способ с разделами HeaderAssets и FooterAssets в шаблоне Fluid. Та же проблема здесь: разделы тезисов не отображаются, если вызываются как кэшируемые, так и не кэшируемые действия.

/* @var $pageRenderer \TYPO3\CMS\Core\Page\PageRenderer */
$pageRenderer = $this->objectManager->get(\TYPO3\CMS\Core\Page\PageRenderer::class);
$pageRenderer->addCssFile('my.css');
$pageRenderer->addJsFooterFile('my.js');

Я знаю, что есть проблемы с кэшированием и PageRenderer (объекты USER и USER_INT). Но я не понимаю, почему вызовы метода PageRenderer терпят неудачу как с кэшируемыми, так и без кэшируемых действий, если они работают только с кэшируемыми или не кэшируемыми действиями. Это предполагаемое поведение? Как я могу заставить вызовы методов PageRenderer работать?

1 Ответ

0 голосов
/ 01 июля 2019

Добавление файлов CSS или JavaScript через PageRenderer вообще не работает в плагинах extbase с действиями без кэширования.Или, по крайней мере, не надежно.Отрисованный вывод не кэшируемого действия будет добавлен в шаблон страницы только после того, как HTML-разметка страницы со ссылками и тегами сценария уже будет полностью обработана.Таким образом, невозможно добавить дополнительные файлы CSS и JavaScript.(Добавление файлов через TypoScript - это путь.)

...