Database tree structures management for Yii 2 framework
Currently it's Nested Sets management extension based on:
Contents:
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist arogachev/yii2-tree
or add
"arogachev/yii2-tree": "*"
to the require section of your composer.json file.
- Basic actions with tree nodes: creating, renaming, moving, deleting
 - Saving state of nodes (opened / closed)
 - Links for updating node
 
Add this to application config:
'controllerMap' => [
    'tree' => 'arogachev\tree\controllers\TreeController',
],Attach additional behavior along with NestedSetsBehavior to your model:
use arogachev\tree\behaviors\NestedSetsManagementBehavior;/**
 * @inheritdoc
 */
public function behaviors()
{
    return [
        NestedSetsBehavior::className(),
        NestedSetsManagementBehavior::className(),
    ];
}The last step is display widget:
use arogachev\tree\widgets\NestedSets;
use frontend\modules\department\models\Department;<?= NestedSets::widget([
    'modelClass' => Department::className(),
]) ?>nameAttribute - string, the name of attribute storing the name of node. Defaults to name.
saveState - boolean, save state of nodes (opened / closed). Defaults to false.
isOpenedAttribute - string, the name of attribute storing if the node opened or closed.
Used together with saveState. Defaults to is_opened.
modelClass - string, the full model class including namespace of managed model. Required.
updateUrl - string, url for updating model in separate page.
Will be processed by yii\helpers\Url::to().
jsTreeOptions - array, options for JsTree widget. Example:
'jsTreeOptions' => [
    'clientOptions' => [
        'core' => [
            'strings' => [
                'New node' => 'Новый отдел',
            ],
        ],
    ],
],