如果页面包含两个Extbase插件,并且一个插件调用了一个可缓存的动作,而另一个插件则是一个不可缓存的动作,则添加CSS和JavaScript文件的PageRenderer方法调用不起作用。没有错误消息,但文件未添加到HTML标记中。
我试图将PageRenderer方法调用放入控制器方法initializeAction
,initializeView
和listAction
中。没关系。
如果两个插件的操作都是可缓存的或不可缓存的,则PageRenderer方法调用将按预期工作。
如果我将可缓存动作设为不可缓存,反之亦然,则PageRenderer方法调用也不起作用。可以执行或不可执行的动作并不重要。
我尝试对Fluid模板中的HeaderAssets和FooterAssets部分使用现代方式。这里存在同样的问题:如果同时调用了可缓存动作和不可缓存动作,则不会渲染这些节。
/* @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方法调用起作用?
答案 0 :(得分:0)
通过PageRenderer添加CSS或JavaScript文件在根本无法执行操作的extbase插件中不起作用。或至少不可靠。仅在具有链接和脚本标签的页面的HTML标记已经完全呈现之后,不可缓存动作的呈现输出才会添加到页面模板中。因此,不可能添加其他CSS和JavaScript文件。 (通过TypoScript添加文件是一种方法。)