kl83 / yii2-sortable-behaviour
Yii2 behaviours to sort and select records inside adjency table
Requires
- php: >=5.4.0
- yiisoft/yii2: ^2.0.0
README
Provides functionality for sorting and moving model instances in a hierarchical structure of adjacency table.
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require kl83/yii2-sortable-behaviour ~1.1.0
or add
"kl83/yii2-sortable-behaviour": "~1.1.0"
to the require section of your composer.json file.
Usage
Add behaviour to your model.
public function behaviors() { return [ [ 'class' => 'kl83\behaviours\SortableBehaviour', 'sortField' => 'sort', 'parentIdField' => 'parent_id', ], ]; }
Behaviour configuration
Behaviour functions
null moveFirst(int $parentId = false)
Moves the model instance to the beginning of $parentId
domain. If $parentId
is not set, then the model instance will be the first in its current domain.
null moveLast(int $parentId = false)
Moves the model instance to the end of $parentId
domain. If $parentId
is not set, then the model instance will be the last in its current domain.
null moveAfter(Model|int $model)
Moves the model instance after $model
. If $model
is empty, then moves the model instance to the beginning of his domain.
null moveBefore(Model|int $model)
Moves the model instance before $model
.
int[] getChildrenId(bool $includeSelf = true, bool $all = true)
Returns an array of instance IDs of child models. If $all
is true, it also includes all sublevels.
\yii\db\ActiveQueryInterface getChildren()
Returns ActiveQuery to get child models.
\yii\db\ActiveQueryInterface getAllChildren(bool $includeSelf = false)
Returns ActiveQuery to get instances of child models, including all sublevels.
Model getParent()
Returns an instance of the parent model.
int[] getParentsId(bool $includeSelf = false)
Returns an array of instance IDs of parent models. Ordered by depth level.
\yii\db\ActiveQueryInterface getParents(bool $includeSelf = false)
Returns ActiveQuery to get instances of parent models.
Model getRoot()
Returns an instance of the root model.
string getFullPath(string $delimeter = " → ", callable $callable = false)
Returns the full path of the model instance. $callable
is function to stringify model for output as path element. Simple $callable
example:
function($model, $isRoot, $isLeaf){ return $model->title; }
Model|false getJointParent(Model $model, bool $includeSelf = false)
Returns an instance of the joint parent of the current model and $model
.
null sortAlphabetically(int $parentId = false, int $direction = SORT_ASC)
Sorting model instances in alphabetical order.
int[] getTreeIds(bool $includeSelf = true, bool $includeParents = false)
Returns the identifiers of the child model instances, including all sublevels. Also include instance IDs of the parent models, if $includeParents
is true.
\yii\db\ActiveQueryInterface getTree(bool $includeSelf = true, bool $includeParents = false)
Returns ActiveQuery to get child model instances, including all sublevels. And instances of the parent models, if $includeParents
is true.
PHPDoc model class heading
* @method null moveFirst(integer $parentId = false)
* Moves the model instance to the beginning of $parentId domain.
* If $parentId is not set, then the model instance will be the first in its current domain.
*
* @method null moveLast(integer $parentId = false)
* Moves the model instance to the end of $parentId domain.
* If $parentId is not set, then the model instance will be the last in its current domain.
*
* @method null moveAfter(self|integer $model)
* Moves the model instance after $model.
* If $model is empty, then moves the model instance to the beginning of his domain.
*
* @method null moveBefore(self|integer $model)
* Moves the model instance before $model.
*
* @method integer[] getChildrenId(boolean $includeSelf = true, boolean $all = true)
* Returns an array of instance IDs of child models. If $all is true, it also includes all sublevels.
*
* @method \yii\db\ActiveQueryInterface getChildren()
* Returns ActiveQuery to get child models.
*
* @method \yii\db\ActiveQueryInterface getAllChildren(boolean $includeSelf = false)
* Returns ActiveQuery to get instances of child models, including all sublevels.
*
* @method self getParent()
* Returns an instance of the parent model.
*
* @method integer[] getParentsId(boolean $includeSelf = false)
* Returns an array of instance IDs of parent models. Ordered by depth level.
*
* @method \yii\db\ActiveQueryInterface getParents(boolean $includeSelf = false)
* Returns ActiveQuery to get instances of parent models.
*
* @method self getRoot()
* Returns an instance of the root model.
*
* @method string getFullPath(string $delimeter = " → ", callable $callable = false)
* Returns the full path of the model instance.
* $callable is function to stringify model for output as path element.
* Simple $callable example:
* function($model, $isRoot, $isLeaf){
* return $model->title;
* }
*
* @method self|false getJointParent(self $model, boolean $includeSelf = false)
* Returns an instance of the joint parent of the current model and $model.
*
* @method null sortAlphabetically(integer $parentId = false, integer $direction = SORT_ASC)
* Sorting model instances in alphabetical order.
*
* @method integer[] getTreeIds(boolean $includeSelf = true, boolean $includeParents = false)
* Returns the identifiers of the child model instances, including all sublevels.
* Also include instance IDs of the parent models, if $includeParents is true.
*
* @method \yii\db\ActiveQueryInterface getTree(boolean $includeSelf = true, boolean $includeParents = false)
* Returns ActiveQuery to get child model instances, including all sublevels.
* And instances of the parent models, if $includeParents is true.
License
MIT License