Database tree structures management for Yii 2 framework

Installs: 1 966

Dependents: 1

Suggesters: 0

Security: 0

Stars: 22

Watchers: 2

Forks: 10

Open Issues: 11


0.1.0 2015-06-13 16:39 UTC

This package is not auto-updated.

Last update: 2024-04-13 15:28:35 UTC


Database tree structures management for Yii 2 framework

Latest Stable Version Total Downloads Latest Unstable Version License

Currently it's Nested Sets management extension based on:



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 [

The last step is display widget:

use arogachev\tree\widgets\NestedSets;
use frontend\modules\department\models\Department;
<?= NestedSets::widget([
    'modelClass' => Department::className(),
]) ?>

Behavior configuration

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.

Widget configuration

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' => 'Новый отдел',