PHP code example of nullref / yii2-datatables
1. Go to this page and download the library: Download nullref/yii2-datatables library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
nullref / yii2-datatables example snippets
<?= \nullref\datatable\DataTable::widget([
'dataProvider' => $dataProvider,
'columns' => [
'id',
'name',
'email'
],
])
<?= \nullref\datatable\DataTable::widget([
'data' => $dataProvider->getModels(),
'columns' => [
'id',
'name',
'email'
],
])
<?= \nullref\datatable\DataTable::widget([
'data' => $dataProvider->getModels(),
'scrollY' => '200px',
'scrollCollapse' => true,
'paging' => false,
'columns' => [
'name',
'email'
],
'withColumnFilter' => true,
])
<?= \nullref\datatable\DataTable::widget([
'columns' => [
//other columns
[
'data' => 'active',
'title' => 'Is active',
'sClass' => 'active-cell-css-class',
],
],
])
<?= \nullref\datatable\DataTable::widget([
'data' => $dataProvider->getModels(),
'id' => 'your-datatable-id'
])
<?= \nullref\datatable\DataTable::widget([
'columns' => [
//other columns
[
'class' => 'nullref\datatable\LinkColumn',
'url' => ['/model/delete'],
'linkOptions' => ['data-confirm' => 'Are you sure you want to delete this item?', 'data-method' => 'post'],
'label' => 'Delete',
],
],
])
//config ...
'columns' => [
//...
[
'class' => 'nullref\datatable\LinkColumn',
'queryParams' => ['some_id'],
'render' => new JsExpression('function render(data, type, row, meta ){
return "<a href=\"/custom/url/"+row["some_id"]+"\">View</a>"
}'),
],
],
//...
<?= \nullref\datatable\DataTable::widget([
'columns' => [
'id',
//...
[
'data' => 'active',
'title' => \Yii::t('app', 'Is active'),
'filter' => ['true' => 'Yes', 'false' => 'No'],
],
[
'data' => 'last_connection',
'filter' => false,
],
],
])
<?= \nullref\datatable\DataTable::widget([
'columns' => [
//other columns
[
'class' => 'nullref\datatable\DataTableColumn', // can be omitted
'data' => 'active',
'renderFiler' => new \yii\web\JsExpression('function() { ' .
'return jQuery(\'<input type="checkbox" value="true"/> Active only\'); ' .
'}'),
'render' => new \yii\web\JsExpression('function(data, type, row, meta) { ' .
'return jQuery(\'<input type="checkbox" value="true" disabled/>\')' .
' .prop(\'checked\', data == \'true\'); ' .
'}'),
],
],
])
'assetManager' => [
'bundles' => [
'nullref\datatable\assets\DataTableAsset' => [
'styling' => \nullref\datatable\assets\DataTableAsset::STYLING_BOOTSTRAP,
]
],
],
<?= \nullref\datatable\DataTable::widget([
'data' => $dataProvider->getModels(),
'tableOptions' => [
'class' => 'table',
],
'columns' => [
'id',
'name',
'email',
],
])
'nullref\datatable\assets\DataTableAsset' => [
'sourcePath' => '@webroot/js/plugin/datatables/',
'js' => [
'jquery.dataTables-1.10-cust.js',
'DT_bootstrap.js',
],
'css' => [
'data-table.css',
],
'styling' => false,
]
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
$orderBy = [];
foreach ($order as $orderItem) {
$orderBy[$columns[$orderItem['column']]['data']] = $orderItem['dir'] == 'asc' ? SORT_ASC : SORT_DESC;
}
return $query->orderBy($orderBy);
},
'applyFilter' => function($query, $columns, $search) {
//custom search logic
$modelClass = $query->modelClass;
$schema = $modelClass::getTableSchema()->columns;
foreach ($columns as $column) {
if ($column['searchable'] == 'true' && array_key_exists($column['data'], $schema) !== false) {
$value = empty($search['value']) ? $column['search']['value'] : $search['value'];
$query->orFilterWhere(['like', $column['data'], $value]);
}
}
return $query;
},
],
];
}
/** ... */
'query' => function() {
$calculatedValue = calculate_value_for_query();
return Model::find()->where(['calculated_value' => $calculatedValue]);
},
/** ... */
<?= \nullref\datatable\DataTable::widget([
/** ... */
'serverSide' => true,
'ajax' => '/site/datatables',
])
<?= \nullref\datatable\DataTable::widget([
/** ... */
'data' => $dataProvider->getModels(),
'extraColumns' => ['customPrice'],
'columns' => [
[
'title' => 'Custom column',
'extraColumns' => ['customField'],
'render' => new JsExpression($customColumnRender),
],
],
])
class SomeController extends Controller
{
public function actions()
{
return [
'datatables' => [
'class' => 'nullref\datatable\DataTableAction',
'query' => Model::find(),
'extraColumns' => ['customPrice'],
],
];
}
}
<?= \nullref\datatable\DataTable::widget([
/** ... */
'extraColumns' => ['customPrice'],
])