yetopen / yii2-models-sorting
Sorting active record models (grid, form, code)
Installs: 18
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 3
Forks: 0
Type:yii2-extension
Requires
- php: >=7.0
- yiisoft/yii2: *
- yiisoft/yii2-jui: *
README
Sorting active record models (grid, form, code) by field. Automaticaly update sort index. Drag&Drop and etc.
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist matthew-p/yii2-models-sorting "@dev"
or add
"matthew-p/yii2-models-sorting": "@dev"
to the require section of your composer.json
file.
Usage
Once the extension is installed, simply use it in your code by:
Add sort column to gridview, if needed (Drag&drop attached to first "td" in "tr"):
GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ['class' => 'yii\grid\SerialColumn'], 'id', 'title', // Sort column [ 'class' => \MP\ARSorting\ARSortColumn::class, 'attribute' => 'sort', 'hideColumn' => false, ], [ 'attribute' => 'created_at', 'format' => ['date', 'format' => 'php: d/m/Y H:i:s'], ], ['class' => 'yii\grid\ActionColumn'], ], ]);
Add action in controller (only for gridview sorting):
class SampleController extends Controller { ... public function actions(): array { return array_merge(parent::actions(), [ 'mp-ar-sort' => \MP\ARSorting\ARSortAction::class, ]); } ... }
Add behavior to AR model:
class SampleModel extends ActiveRecord { ... /** * @inheritdoc */ public function behaviors(): array { return [ [ 'class' => \MP\ARSorting\ARSortBehavior::class, 'attribute' => 'sort', // Optional 'queryCondition' => function ($query, self $model) { $query->andWhere(['parent_id' => $model->parent_id]); }, ], ]; } ... }
Define encryption key in params.php:
'MPARSort' => [
'encryptionKey' => 'RandomKey',
],
or
'MPComponents' => [
'encryptionKey' => 'RandomKey',
],
That's all. Check it.