The extension is inspired by the yii2-widget-datatables by fedemotta., (*1)
This extension provides the DataTables integration for the Yii2 framework., (*2)
, (*3)
Installation
The preferred way to install this extension is through composer., (*4)
With Composer installed, you can then install the extension using the following commands:, (*5)
$ php composer.phar require jlorente/yii2-datatables "*"
or add, (*6)
...
"require": {
// ... other configurations ...
"jlorente/yii2-datatables": "*"
}
to the require
section of your composer.json
file., (*7)
Usage
Use DataTables as any other other Yii2 widget., (*8)
use jlorente\datatables\grid\DataTables;
$searchModel = new ModelSearch();
$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
DataTables::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'columns' => [
['class' => 'yii\grid\SerialColumn'],
//columns
['class' => 'yii\grid\ActionColumn'],
],
]);
This extension uses the Bootstrap integration plugin to provide a Yii2 style by default., (*9)
The TableTools plugin is also available. Specify the DOM and the tableTools settings in the clientOptions array as the following example., (*10)
DataTables::widget([
//Other configurations
'clientOptions' => [
"lengthMenu"=> [[20,-1], [20,Yii::t('app',"All")]],
"info"=>false,
"responsive"=>true,
"dom"=> 'lfTrtip',
"tableTools"=>[
"aButtons"=> [
[
"sExtends"=> "copy",
"sButtonText"=> Yii::t('app',"Copy to clipboard")
],[
"sExtends"=> "csv",
"sButtonText"=> Yii::t('app',"Save to CSV")
],[
"sExtends"=> "xls",
"oSelectorOpts"=> ["page"=> 'current']
],[
"sExtends"=> "pdf",
"sButtonText"=> Yii::t('app',"Save to PDF")
],[
"sExtends"=> "print",
"sButtonText"=> Yii::t('app',"Print")
],
]
]
],
]);
You can also use DataTables in the JavaScript layer of your application. To
achieve this, you need to include DataTables as a dependency of your Asset file.
In this case, you could use yii\grid\GridView or using the datatables options
retrieve => true to avoid errors. In both case all options must be in the
Javascript object., (*11)
public $depends = [
...
'jlorente\datatables\assets\DataTablesAsset',
...
];