yii2-sortable-gridview
, (*1)
This is an extension of Yii2 GridView., (*2)
This extension render a sortable GridView which you can drag and drop the record items from the list, and store the order in ActiveRecord., (*3)
Getting Started
Installing
Install with Composer:, (*4)
composer require richardfan1126/yii2-sortable-gridview "*"
or, (*5)
php composer.phar require richardfan1126/yii2-sortable-gridview "*"
or add, (*6)
"richardfan1126/yii2-sortable-gridview":"*"
to the require section of your composer.json file., (*7)
Setting up SortableAction
In your controller, add the SortableAction into action():, (*8)
use richardfan\sortable\SortableAction;
public function actions(){
return [
'sortItem' => [
'class' => SortableAction::className(),
'activeRecordClassName' => YourActiveRecordClass::className(),
'orderColumn' => 'name_of_field_storing_ordering',
'startPosition' => 1, // optional, default is 0
],
// your other actions
];
}
Setting up SortableGridView
In the view file, use SortableGridView as using the Yii default GridView, (*9)
use richardfan\sortable\SortableGridView;
= SortableGridView::widget([
'dataProvider' => $dataProvider,
// you can choose how the URL look like,
// but it must match the one you put in the array of controller's action()
'sortUrl' => Url::to(['sortItem']),
'columns' => [
// Data Columns
],
]); ?>
You may also want to disable the pagination of data provider, in order to allow reordering across pages., (*10)
You can do it by calling below before passing data provider into SortableGridView, (*11)
$dataProvider->pagination = false;
Configurations
SortableAction
example:, (*12)
use richardfan\sortable\SortableAction;
public function actions(){
return [
'sortItem' => [
'class' => SortableAction::className(),
'activeRecordClassName' => Articles::className(),
'orderColumn' => 'sortOrder',
],
// your other actions
];
}
-
activeRecordClassName (required)The ActiveRecrod class name. Use the full class name with namespace.
-
orderColumn (required) The column name which store the sorting order of each records. The column should be integer.
SortableGridView
example:, (*13)
use richardfan\sortable\SortableGridView;
= SortableGridView::widget([
'dataProvider' => $dataProvider,
// SortableGridView Configurations
'sortUrl' => Url::to(['sortItem']),
'sortingPromptText' => 'Loading...',
'failText' => 'Fail to sort',
'moveItem' => '.moveItem',
'columns' => [
[
'content' => function(){
return "";
},
'contentOptions' => ['style'=>'cursor:move;', 'class' => 'moveItem'],
],
// Data Columns
],
]); ?>
-
sortUrl (required) The URL link to the SortableAction defined in controller's action().
-
sortingPromptText (optional) The text shown in the model while the server is reordering model. You can use HTML tag in this attribute. Default to "Loading...".
-
failText (optional) The text shown in alert box when sorting failed. Default to "Fail to sort".
License
yii2-sortable-gridview is released under the MIT License. See the bundled LICENSE for details., (*14)