-
Notifications
You must be signed in to change notification settings - Fork 0
/
datatable.php
90 lines (84 loc) · 2.08 KB
/
datatable.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
/**
* @author Dmytro Karpovych
* @copyright 2019 NRE
*
* @var \yii\data\ActiveDataProvider $dataProvider
*/
use yii\web\JsExpression;
$customColumnRender1 = <<<JS
function customRender1(data, type, row, meta ){
return "ID: " + row["id"] + ", Price: " + row["price"];
}
JS;
$customColumnRender2 = <<<JS
function customRender2(data, type, row, meta) {
return JSON.stringify(row);
}
JS;
$content = [
'tables' => [
'tbl1' => [
'data' => $dataProvider->getModels(),
'columns' => [
'id',
'price'
],
],
'tbl2' => [
'data' => $dataProvider->getModels(),
'columns' => [
'id',
'price'
],
],
],
];
foreach ($content['tables'] as $tableId => $table) {
$columns = [];
foreach ($table['columns'] as $key) {
$column = [
'data' => $key,
'title' => $key,
];
$columns[] = $column;
}
echo \nullref\datatable\DataTable::widget([
// 'data' => $table['data'],
'serverSide' => true,
'ajax' => '/product/default/datatables-ajax',
'columns' => $columns,
'globalVariable' => true,
'paging' => false,
'ordering' => false,
'info' => false,
'withColumnFilter' => true,
'id' => $tableId,
]);
}
?>
<?= \nullref\datatable\DataTable::widget([
'data' => $dataProvider->getModels(),
'id' => 'dataTable1',
'globalVariable' => true,
'serverSide' => true,
'ajax' => '/product/default/datatables-ajax',
'extraColumns' => ['id2'],
'columns' => [
'id',
'price',
[
'title' => 'Custom column #1',
'render' => new JsExpression($customColumnRender1),
],
[
'title' => 'Custom column #2',
'render' => new JsExpression($customColumnRender2),
],
[
'url' => 'test',
'label' => 'Test link',
'class' => \nullref\datatable\LinkColumn::class,
],
],
]) ?>