mirror of
https://github.com/Oreolek/yii2-nested-sets.git
synced 2024-06-17 07:10:46 +03:00
src | ||
tests | ||
.gitignore | ||
.scrutinizer.yml | ||
.travis.yml | ||
composer.json | ||
composer.lock | ||
LICENSE.md | ||
phpunit.xml.dist | ||
README.md |
Nested Sets Behavior for Yii 2
A modern nested sets behavior for the Yii framework utilizing the Modified Preorder Tree Traversal algorithm.
Installation
The preferred way to install this extension is through composer.
Either run
$ php composer.phar require creocoder/yii2-nested-sets:dev-master
or add
"creocoder/yii2-nested-sets": "dev-master"
to the require
section of your composer.json
file.
Configuring
First you need to configure model as follows:
use creocoder\nestedsets\NestedSetsBehavior;
class Tree extends \yii\db\ActiveRecord
{
public function behaviors() {
return [
NestedSetsBehavior::className(),
];
}
public function transactions()
{
return [
self::SCENARIO_DEFAULT => self::OP_ALL,
];
}
public static function find()
{
return new TreeQuery(get_called_class());
}
}
Second you need to configure query model as follows:
use creocoder\nestedsets\NestedSetsQueryBehavior;
class TreeQuery extends \yii\db\ActiveQuery
{
public function behaviors() {
return [
NestedSetsQueryBehavior::className(),
];
}
}
Usage
Quick Example
Making a root node
$countries = new Menu(['name' => 'Countries']);
$countries->makeRoot();
Make a node as the last child of another node
$australia = new Menu(['name' => 'Australia']);
$australia->appendTo($countries);
The tree will look like this
- Countries
- Australia
Make a node as the first child of another node
$russia = new Menu(['name' => 'Russia']);
$russia->prependTo($countries);
The tree will look like this
- Countries
- Russia
- Australia
Append a node before another node
$newZeeland = new Menu(['name' => 'New Zeeland']);
$newZeeland->insertBefore($australia);
The tree will look like this
- Countries
- Russia
- New Zeeland
- Australia
Append a node after another node
$argentina = new Menu(['name' => 'Argentina']);
$argentina->insertAfter($australia);
The tree will look like this
- Countries
- Russia
- New Zeeland
- Australia
- Argentina
Installation
Configuring the model soon to come
BASIC USAGE
Soon to come
ADVANCED USAGE
Soon to come