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