如何使用或加载xxx.js.twig文件

时间:2016-02-25 14:15:38

标签: javascript php jquery symfony twig

我开始在一家新公司工作,他们有这个工具来管理公司的不同方面。他们使用php中的symfony框架和一个名为DataTables的jquery插件来显示表格。在项目中,他们使用table.js.twig,它应该使用表id为整个站点中的表提供某种格式。我的问题是如何实现这种文件。我一直在寻找有关此类文件的信息,但我只找到有关html.twig的信息。

the tables.js.twig:

$(function() {
    .
    .
    .
    $('#id1').dataTable({
        "bPaginate": true,
        "bLengthChange": true,
        "bFilter": true,
        "bSort": true,
        "bInfo": true,
        "bAutoWidth": false
    });

    $('#id2').dataTable({
        "bPaginate": true,
        "bLengthChange": true,
        "bFilter": true,
        "bSort": true,
        "bInfo": true,
        "bAutoWidth": false
    });
    .
    .
    .
});

base.html.twig中的脚本部分:

 <script type="text/javascript">

    $(document).ready(function() {
        $('.summernote').summernote({
          height: 500,                 // set editor height

          minHeight: null,             // set minimum height of editor
          maxHeight: null,             // set maximum height of editor

          focus: true,                 // set focus to editable area after initializing summernote

        });
        //Here is where all the .dataTables should go.
    });

</script>

如果我直接在脚本部分写入所有.dataTable它可以工作,但它们很多,并且它应该在一个twig文件中以使其更具可读性但我不知道它是如何工作的。

这是我的第一个问题,我将此作为最后一个资源。如果你能帮助我,我将非常感激。

修改

这是我在文件夹中的分发

/app
    /Resources
        /views
            /base.html.twig
    /src
        /Company
            /Bundle
                /OfficeBundle
                    /Resources
                        /views
                            /User
                                /allUser.html.twig **Where I display the tables
                        /Structure
                            /tables.js.twig

3 个答案:

答案 0 :(得分:0)

以下是我要做的事情:

class JavascriptController extends BaseController {

    /**
     * @Route(/javascript/datatable.js, name="javascript_datatable")
     * @Template("YourBundle:Javascript:dataTable.js.twig")
     */
    public function generateDataTableAction() {
      //logic to fetch your data

      return array('data' => $data);
    }

}

在你的html中添加

<script type="text/javascript" src="{{ path('javascript_datatable')}}" />

在你的Twig中,你可以实现你想要构建表的逻辑

我不知道这是否违反良好做法。

答案 1 :(得分:0)

符号$(function() {$(document).ready(function() {重叠。因此,如果您需要在 base.html.twig 中插入表格定义,我建议从 tables.js.twi g中删除$(function() {容器base.html.twig替换

//Here is where all the .dataTables should go. 

部分:

{% include 'tables.js.twig' %}

tables.js.twig路径应根据您的目录结构进行调整。

答案 2 :(得分:0)

我发现了问题,我使用了Salenix的解决方案。问题出在路径上,为了做出参考,我必须做以下事情:

{% block documentReady %}
    {{ parent() }}
    {% include  '@CompanyOfficeITBundle/Resources/views/Structure/tables.js.twig'%}
{% endblock documentReady %}

首先为文件准备一个块,然后按照Salenix的建议进行操作,最后我必须使用@和bundle进行引用。

感谢您的帮助。