如何让TYJ3 BE正确解析NameJS命名空间?

问题描述 投票:1回答:1

我想在TYPO3后端加载额外的JS。我在the official documentation中使用requireJS。

在ext_localconf.php中我试图像这样加载我的JS:

if (TYPO3_MODE=="BE" )   {
    $pageRenderer = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class);
    $pageRenderer->loadRequireJsModule('TYPO3/CMS/ExtensionName/EventEndDateValidator');
}

在我的浏览器控制台中,我收到如下错误:

错误:“TYPO3 / CMS / ExtensionName / EventEndDateValidator”http://requirejs.org/docs/errors.html#scripterror的脚本错误

加载源“http://localhost/typo3/TYPO3/CMS/ExtensionName/EventEndDateValidator.js?bust=6b9250465c29da98dea71ea9e447e7db2d3ccea3”失败。 index.php文件:1

所以名称空间没有解决。 The docs@DAM说,将JS文件放在EXT:extension_name/Resources/Public/JavaScript目录中就足够了。

我的JS文件是这样的:

define(['jquery'], function($) {
    var EventEndDateValidator = {
        sayings: [
            'The quick brown fox jumps over the lazy dog',
            'Bright vixens jump; dozy fowl quack'
        ]
    };

    EventEndDateValidator.say = function() {
        alert(EventEndDateValidator.sayings[Math.floor(Math.random() * EventEndDateValidator.sayings.length)]);
    };

    $(document).ready(function() {
        // Initialize the view
        EventEndDateValidator.say();
    });
});

我错过了什么吗?

namespaces requirejs typo3 typo3-8.x
1个回答
1
投票

为了澄清你写的一件事,你要用你自己的扩展名替换ExtensionName - 不确定你是否这样做:

假设你的扩展名有密钥wonderful_extension,那么这个名字通常是WonderfulExtension

然后在文件ext_localconf.php中你要这样写:

if (TYPO3_MODE=="BE" )   {
    $pageRenderer = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Core\Page\PageRenderer::class);
    $pageRenderer->loadRequireJsModule('TYPO3/CMS/WonderfulExtension/EventEndDateValidator');
}

根据您目前使用的代码,扩展键必须是extension_name,名称为ExtensionName,可能真的使用这些字符串是不合理的。在文档中,它们将被视为要用您自己的值替换的变量。

© www.soinside.com 2019 - 2024. All rights reserved.