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