gpt4 book ai didi

TYPO3:如何通过 Controller 初始化操作和页面渲染器添加 css 和 js 文件?

转载 作者:行者123 更新时间:2023-12-03 23:18:03 25 4
gpt4 key购买 nike

我在 Controller 级别使用 TYPO3 8 的新页面渲染器通过 initializeAction 添加扩展特定的 css 和 js 文件:

public function initializeAction()
{
$extPath = ExtensionManagementUtility::siteRelPath(
$this->request->getControllerExtensionKey()
);

$extJs = $extPath . 'Resources/Public/Js/ext_booking_manager.min.js';
$extCss = $extPath . 'Resources/Public/Css/ext_booking_manager.css';

/** @var PageRenderer $pageRenderer */
$pageRenderer = $this->objectManager->get(PageRenderer::class);

$pageRenderer->addCssFile($extCss);
$pageRenderer->addJsFooterFile(
$extJs, 'text/javascript', false
);
}

这有时工作正常,但只是有时。这意味着有时 css 文件和 js 文件会被正确添加,有时如果我重新加载页面,则文件将无法正确添加。有什么不对?

对于像 TYPO3 7 这样的旧版本,我使用了类似的东西:
public function initializeAction()
{
$extPath = ExtensionManagementUtility::siteRelPath(
$this->request->getControllerExtensionKey()
);

$extJs = $extPath . 'Resources/Public/Js/ext_booking_manager.min.js';
$GLOBALS['TSFE']->getPageRenderer()->addJsFooterFile(
$extJs, 'text/javascript', false
);

parent::initializeAction();
}

但这将不再适用于 TYPO3 8。有什么建议?

最佳答案

请注意,在 TYPO3 v8 中使用 HeaderAssets and FooterAssets sections 提供了一种不同的方法。在您的模板中。因此,您的操作模板可能如下所示:


Your template code

<f:section name="FooterAssets">
<link rel="stylesheet" href="{f:uri.resource(path: 'Css/ext_booking_manager.css')}"/>
<script src="{f:uri.resource(path: 'Js/ext_booking_manager.min.js')}"></script>
</f:section>

这样您就不需要 Controller 中的任何资源逻辑,因此您的 initializeAction()方法可以删除。

顺便说一句:我建议使用 JavaScript作为 JavaScript 资源的目录名称以符合 TYPO3 约定。

关于TYPO3:如何通过 Controller 初始化操作和页面渲染器添加 css 和 js 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45440189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com