Как заставить RequireJS правильно разрешить пространство имен для TYPO3 BE? - PullRequest
1 голос
/ 11 апреля 2019

Я хочу загрузить дополнительный JS в серверную часть TYPO3. Я использую 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

Таким образом, пространство имен не разрешается. В документах и @ 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();
    });
});

Я что-то упустил?

1 Ответ

1 голос
/ 14 апреля 2019

Чтобы прояснить одну вещь, которую вы написали, вы должны заменить 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, вероятно, было бы неразумно использовать эти строки на самом деле.В документации они должны рассматриваться как переменные, которые должны быть заменены вашими собственными значениями.

...