TYPO3后端模块DataTable没有功能

时间:2017-03-21 11:22:43

标签: jquery datatables typo3 backend typo3-7.6.x

我在我的extbase后端包含模块布局html中的不同资产。要初始化多个DataTables:

$(dataTables[i]).DataTable(dataTableOptions);



<f:be.container 
    enableClickMenu="false"
    loadExtJs="false"
    enableExtJsDebug="true"
>

    <script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jquery-1.11.3.min.js')}"></script>
    <script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jquery-ui.min.js')}"></script>
    <script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jquery.dataTables.min.js')}"></script>
    <script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/moment.min.js')}"></script>
    <script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jquery.multiselect.min.js')}"></script>
    <script type="text/javascript" src="{f:uri.resource(path:'js/Backend/lib/jstree.min.js')}"></script>
&#13;
&#13;
&#13;

但是在更新到TYPO3 7.6.15后,总是有

  

&#34; TypeError:$(...)。DataTable不是函数&#34;

错误。我尝试了不同的变化,但没有任何作用。我认为,问题将是后端模块中的jquery的noconflict版本。但我不知道,要解决这个问题。我希望你能帮助我

最好的注册 丹尼尔

1 个答案:

答案 0 :(得分:2)

好吧,经过四处拼搏,我用Typo3 requirejs符号解决了我的问题。我认为,jQuery Typo3 noConflict标题包括将是问题,我不知道,为什么Typo3不使用她自己的命名空间,为他们的方法。但我认为,将所有我自己/遗留的js-librariers包含在requirejs中将是最佳实践。

首先,在你的js文件中定义(我的:BackendModule.js放在'EXT:my_extension / Resources / Public / JavaScript'中)所有先决条件/依赖项,必须包括:

 define([
'jquery',
'TYPO3/CMS/MyExtension/jquery-ui-widgets',
'moment',
'TYPO3/CMS/MyExtension/jquery.multiselect.min',
'datatables', ], function($, widgets, moment,multiselect) {[YOUR CODE]});

命名空间'TYPO3 / CMS / MyExtension / jquery-ui-widgets'映射到路径:'EXT:my_extension / Resources / Public / JavaScript / jquery-ui-widgets.js'

之后,我必须在模板中包含我的Js-File:

<f:be.container
        loadExtJsTheme="false"
        enableExtJsDebug="false"
        loadJQuery="false"
        jQueryNamespace="defaultNoConflict"
        includeRequireJsModules="{
            0:'TYPO3/CMS/MyExtension/BackendModule'
        }"