specifi/yii2-datatables

Yii2 扩展 DataTables jQuery 插件

安装次数: 42

依赖者: 0

建议者: 0

安全性: 0

星标: 0

关注者: 5

分支: 46

类型:yii2-extension

1.1.0 2018-02-21 17:04 UTC

This package is auto-updated.

Last update: 2024-08-29 03:58:15 UTC


README

Yii2 小部件,用于 DataTables jQuery 插件

正在进行中。尚未准备好用于生产

安装

安装此扩展的首选方法是通过 composer。

运行以下命令:

composer require "nullref/yii2-datatables" "*"

或者将以下内容添加到您的 composer.json 文件的 require 部分:

"nullref/yii2-datatables": "*"

基本用法

<?= \nullref\datatable\DataTable::widget([
    'data' => $dataProvider->getModels(),
    'columns' => [
        'id',
        'name',
        'email'
    ],
]) ?>

添加行链接

    <?= \nullref\datatable\DataTable::widget([
        'columns' => [
            //other columns
            [
                'class' => 'nullref\datatable\LinkColumn',
                'url' => ['/model/delete'],
                'options' => ['data-confirm' => 'Are you sure you want to delete this item?', 'data-method' => 'post'],
                'queryParams' => ['id'],
                'label' => 'Delete',
            ],
        ],
    ]) ?>

LinkColumn 属性

  • label - 放置在 a 标签中的文本;
  • url - 将传递给 Url::to()
  • options - a 标签的 HTML 选项;
  • queryParams - 添加到 url 的参数数组

样式

DataTables 支持多种样式解决方案,包括 BootstrapjQuery UIFoundation

'assetManager' => [
    'bundles' => [
        'nullref\datatable\DataTableAsset' => [
            'styling' => \nullref\datatable\DataTableAsset::STYLING_BOOTSTRAP,
        ]
    ],
],

自定义资源

可以使用自定义样式和脚本

'nullref\datatable\DataTableAsset' => [
    'sourcePath' => '@webroot/js/plugin/datatables/',
    'js' => [
        'jquery.dataTables-1.10-cust.js',
        'DT_bootstrap.js',
    ],
    'css' => [
        'data-table.css',
    ],
    'styling' => false,
]

服务器端处理

要启用服务器端处理,将 DataTableAction 添加到控制器中,如下所示:

 class SomeController extends Controller
 {
     public function actions()
     {
         return [
             'datatables' => [
                 'class' => 'nullref\datatable\DataTableAction',
                 'query' => Model::find(),
             ],
         ];
     }
     
}

可以通过闭包自定义搜索和排序

public function actions()
{
    return [
         'datatables' => [
             'class' => 'nullref\datatable\DataTableAction',
             'query' => Model::find(),
             'applyOrder' => function($query, $columns, $order) {
                //custom ordering logic
                return $query;
             },
             'applyFilter' => function($query, $columns, $search) {
                //custom search logic
                return $query;
             },
         ],
    ];
}

在 DataTable 选项中指定

{
    "serverSide": true,
    "ajax": "/datatables"
}