Zend Framework 2:填充ajax表(DataTable)

时间:2015-03-13 01:11:53

标签: ajax zend-framework2

以下是DataTable模块中table-ajax.js文件的片段。 我的问题是,如果我在Controller中使用IndexAction {},那么将是Ajax url而不是 table_ajax.php 。我想显示数据库中的数据。

    var handleRecords = function () {

    var grid = new Datatable();

    grid.init({
        src: $("#datatable_ajax"),
        onSuccess: function (grid) {
        },
        onError: function (grid) {
        },
        onDataLoad: function(grid) {
        },
        loadingMessage: 'Loading...',
        dataTable: { 

            "bStateSave": true, // save datatable state(pagination, sort, etc) in cookie.

            "lengthMenu": [
                [10, 20, 50, 100, 150, -1],
                [10, 20, 50, 100, 150, "All"] // change per page values here
            ],
            "pageLength": 10, // default record count per page
            "ajax": {
                "url": "table_ajax.php", // ajax source
            },
            "order": [
                [1, "asc"]
            ]// set first column as a default sort by asc
        }
    });

1 个答案:

答案 0 :(得分:1)

首先,您需要向viewmanager添加策略,以便返回json。这是在你的module.config中完成的,如下所示:

'view_manager' => array(
...
   'strategies' => array(
       'ViewJsonStrategy'
   ),
...
),

我假设你已经通过Autoloader导入了这个DataTableModule。因此,您可以在控制器中扩展或实现“table_ajax.php”,并覆盖/添加返回值作为zf2 JsonModel。

  

在Controller中的Action中,扩展/实现ajax_table.php

...
return new JsonModel($whateverTheResultIs);
...

现在您有一个返回JSON的控制器,您需要设置一条路线。这很简单,它只链接到你的控制器动作,因为你在Viewmanager中定义了一个策略,ZF2会为你做剩下的讨厌的ajax。

编辑:而不是在控制器中扩展table_ajax.php,编写一个从table_ajax.php中检索信息的服务可能是个好主意。