如何让 RequireJS 为 TYPO3 BE 正确解析命名空间?
How to make RequireJS resolve namespace correctly for TYPO3 BE?
我想在 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');
}
在我的浏览器控制台中,我收到如下错误:
Error: Script error for
"TYPO3/CMS/ExtensionName/EventEndDateValidator"
http://requirejs.org/docs/errors.html#scripterror
和
Loading failed for the with source
“http://localhost/typo3/TYPO3/CMS/ExtensionName/EventEndDateValidator.js?bust=6b9250465c29da98dea71ea9e447e7db2d3ccea3”.
index.php:1
所以名称 space 没有解析。 The docs and @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();
});
});
我错过了什么吗?
为了澄清您写的一件事,您必须将 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
,真正使用这些字符串可能是不合理的。在文档中,它们必须被视为要替换为您自己的值的变量。
我想在 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');
}
在我的浏览器控制台中,我收到如下错误:
Error: Script error for "TYPO3/CMS/ExtensionName/EventEndDateValidator" http://requirejs.org/docs/errors.html#scripterror
和
Loading failed for the with source “http://localhost/typo3/TYPO3/CMS/ExtensionName/EventEndDateValidator.js?bust=6b9250465c29da98dea71ea9e447e7db2d3ccea3”. index.php:1
所以名称 space 没有解析。 The docs and @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();
});
});
我错过了什么吗?
为了澄清您写的一件事,您必须将 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
,真正使用这些字符串可能是不合理的。在文档中,它们必须被视为要替换为您自己的值的变量。