Implementation Rubaxa/Sortable for Yii2 widgets.
Supported:
- GridView widget.
Create a new migration, change a parent to the migration class from the extension and specify the table name property:
class m140811_131705_Models_order extends \kotchuprik\sortable\migrations\Migration
{
protected $tableName = 'models';
}
Add the sortable behavior to your model and specify the query property:
public function behaviors()
{
return [
'sortable' => [
'class' => \kotchuprik\sortable\behaviors\Sortable::className(),
'query' => self::find(),
],
];
}
Add the sorting action to your controller and specify the query property:
public function actions()
{
return [
'sorting' => [
'class' => \kotchuprik\sortable\actions\Sorting::className(),
'query' => \vendor\namespace\Model::find(),
],
];
}
If you're using another primary key (not 'id'), you must specify it in 'pk' parameter:
public function actions()
{
return [
'sorting' => [
'class' => \kotchuprik\sortable\actions\Sorting::className(),
'query' => \vendor\namespace\Model::find(),
'pk' => 'modelField'
],
];
}
Add the column to your grid view and specify the sorting url like here:
echo \yii\grid\GridView::widget([
'dataProvider' => $model->search(),
'rowOptions' => function ($model, $key, $index, $grid) {
return ['data-sortable-id' => $model->id];
},
'columns' => [
[
'class' => \kotchuprik\sortable\grid\Column::className(),
],
'id',
'title',
'order',
],
'options' => [
'data' => [
'sortable-widget' => 1,
'sortable-url' => \yii\helpers\Url::toRoute(['sorting']),
]
],
]);
If cdn is not accessible in your country, you can use Sortable library from local dependencies:
...
'columns' => [
[
'class' => \kotchuprik\sortable\grid\Column::className(),
'useCdn' => false
],
...
],
...