Skip to content

Latest commit

 

History

History
117 lines (84 loc) · 2.85 KB

README.md

File metadata and controls

117 lines (84 loc) · 2.85 KB

Yii 2 Tree

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:

Contents:

Installation

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.

Features

  • Basic actions with tree nodes: creating, renaming, moving, deleting
  • Saving state of nodes (opened / closed)
  • Links for updating node

Usage

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(),
]) ?>

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