Zend Framework 2:填充 ajax table(数据表)

Zend Framework 2: Populate ajax table (DataTable)

下面是来自 DataTable 模块的 table-ajax.js 文件的片段。 我的问题是,如果我在我的控制器中使用 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
        }
    });

首先,您需要向视图管理器添加一个策略,这样您就可以 return json。这是在你的 module.config 中完成的,就像这样:

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

我假设您已经通过自动加载器导入了这个 DataTableModule。因此,您可以在控制器中扩展或实现 "table_ajax.php" 和 override/add 一个 return 值作为 zf2 JsonModel。

In your Action within your Controller that extends/implements ajax_table.php

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

既然您已经有了一个 return 控制您的 JSON 的控制器,您将需要设置一条路线。这非常简单,它只链接到您的控制器操作,并且由于您在 Viewmanager ZF2 中定义了一个策略,所以剩下的麻烦 ajax 会为您完成。

编辑:与其在控制器中扩展 table_ajax.php,不如编写一个从 table_ajax.php.

检索信息的服务可能是个好主意