arogachev / yii2-tree
Database tree structures management for Yii 2 framework
Installs: 1 968
Dependents: 1
Suggesters: 0
Security: 0
Stars: 22
Watchers: 2
Forks: 10
Open Issues: 11
Type:yii2-extension
Requires
- bower-asset/jstree: *
- creocoder/yii2-nested-sets: 0.9.*
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2024-08-31 17:45:07 UTC
README
Database tree structures management for Yii 2 framework
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' => 'Новый отдел', ], ], ], ],