Reorderable drag-and-drop lists widget for Yii framework.
Based on JavaScript library: https://github.com/RubaXa/Sortable
composer require --prefer-dist ereminmdev/yii2-sortablejs
ClientOptions: https://github.com/RubaXa/Sortable#sortable
Insert widget into view:
<?= \ereminmdev\yii2\sortablejs\SortableJs::widget([
'elementSelector' => '.items',
'clientOptions' => [
'handle' => '.item-handle',
],
]) ?>
or with SortableJsAction action:
- add action to controller:
public function actions()
{
return [
'sortable' => [
'class' => 'ereminmdev\yii2\sortablejs\SortableJsAction',
],
];
}
- add widget into view:
<?= SortableJs::widget([
'elementSelector' => '.items',
'storeSetAction' => Url::toRoute(['/site/sortable', 'model' => Product::class]),
]) ?>
To refresh after ajax:
- add into view before widget
$this->registerJs('if (Sortable.active) Sortable.active.destroy();');
- or set
destroyOldBeforeThis
widget option totrue