This is an extension of Yii2 GridView.
This extension render a sortable GridView which you can drag and drop the record items from the list, and store the order in ActiveRecord.
Install with Composer:
composer require richardfan1126/yii2-sortable-gridview "*"
or
php composer.phar require richardfan1126/yii2-sortable-gridview "*"
or add
"richardfan1126/yii2-sortable-gridview":"*"
to the require section of your composer.json file.
In your controller, add the SortableAction into action():
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
];
}
In the view file, use SortableGridView as using the Yii default GridView
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.
You can do it by calling below before passing data provider into SortableGridView
$dataProvider->pagination = false;
example:
use richardfan\sortable\SortableAction;
public function actions(){
return [
'sortItem' => [
'class' => SortableAction::className(),
'activeRecordClassName' => Articles::className(),
'orderColumn' => 'sortOrder',
],
// your other actions
];
}
example:
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 "<span class='glyphicon glyphicon-resize-vertical'></span>";
},
'contentOptions' => ['style'=>'cursor:move;', 'class' => 'moveItem'],
],
// Data Columns
],
]); ?>
yii2-sortable-gridview is released under the MIT License. See the bundled LICENSE for details.
Comments