PHPackages                             igorkri/yii2-tree-manager - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. igorkri/yii2-tree-manager

ActiveYii2-extension

igorkri/yii2-tree-manager
=========================

An enhanced tree management module with tree node selection and manipulation using nested sets.

037PHP

Since Jun 8Pushed 2y ago1 watchersCompare

[ Source](https://github.com/igorkri/yii2-tree-manager)[ Packagist](https://packagist.org/packages/igorkri/yii2-tree-manager)[ RSS](/packages/igorkri-yii2-tree-manager/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

```
$ composer require igorkri/yii2-tree-manager "~1.0.0"

```

or add

```
"igorkri/yii2-tree-manager": "~1.0.0"

```

to the `require` section of your `composer.json` file.

Usage
-----

[](#usage)

### Step 1: Prepare Database

[](#step-1-prepare-database)

Create your database table to store the tree structure. You can do it in one of the following ways:

#### Option 1: Run DB Migrations

[](#option-1-run-db-migrations)

You can run the migrations script provided to create the database structure from your yii programming console:

```
php yii migrate/up --migrationPath=@vendor/igorkri/yii2-tree-manager/src/migrations

```

#### Option 2: Executing SQL script

[](#option-2-executing-sql-script)

Alternatively, you can execute the SQL script to generate your DB structure. Copy and modify the `migrations/tree.sql` file (a MySQL example), to create the table `tbl_tree` (or for any table name you need).

> NOTE: You can add columns you need to this table, but you cannot skip/drop any of the columns mentioned in the script. You can choose to rename the `id`, `root`, `lft`, `rgt`, `lvl`, `name`, `icon`, `icon_type` columns if you choose to - but these must be accordingly setup in the module.

Alternatively, you can configure your model to not extend from `igorkri\tree\models\Tree` and instead implement and use the `igorkri\tree\models\TreeTrait`:

```
namespace frontend\models;

use Yii;

class Tree extends \yii\db\ActiveRecord
{
    use igorkri\tree\models\TreeTrait;

    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'tbl_tree';
    }
}
```

### Step 3: Setup Module

[](#step-3-setup-module)

Configure the module named `treemanager` in the modules section of your Yii configuration file.

```
'modules' => [
   'treemanager' =>  [
        'class' => '\igorkri\tree\Module',
        // other module settings, refer detailed documentation
    ]
]
```

### Step 4: Using TreeView Widget

[](#step-4-using-treeview-widget)

In your view files, you can now use the tree view directly to manage tree data as shown below:

```
use igorkri\tree\TreeView;
echo TreeView::widget([
    // single query fetch to render the tree
    'query'             => Tree::find()->addOrderBy('root, lft'),
    'headingOptions'    => ['label' => 'Categories'],
    'isAdmin'           => false,                       // optional (toggle to enable admin mode)
    'displayValue'      => 1,                           // initial display value
    //'softDelete'      => true,                        // normally not needed to change
    //'cacheSettings'   => ['enableCache' => true]      // normally not needed to change
]);
```

### Step 5: Using TreeViewInput Widget

[](#step-5-using-treeviewinput-widget)

If you wish to use the tree input to select tree items, you can use the TreeViewInput widget as shown below. Normally you would use this as a dropdown with the `asDropdown` property set to `true`. If `asDropdown` is set to `false`, the treeview input widget will be rendered inline for selection.

```
use igorkri\tree\TreeViewInput;
echo TreeViewInput::widget([
    // single query fetch to render the tree
    'query'             => Tree::find()->addOrderBy('root, lft'),
    'headingOptions'    => ['label' => 'Categories'],
    'name'              => 'kv-product',    // input name
    'value'             => '1,2,3',         // values selected (comma separated for multiple select)
    'asDropdown'        => true,            // will render the tree input widget as a dropdown.
    'multiple'          => true,            // set to false if you do not need multiple selection
    'fontAwesome'       => true,            // render font awesome icons
    'rootOptions'       => [
        'label' => '',
        'class'=>'text-success'
    ],                                      // custom root label
    //'options'         => ['disabled' => true],
]);
```

###  Health Score

14

—

LowBetter than 3% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity7

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity21

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/be3baa1d6122ccdc2f0df8818cbac9a8095c8f964a82a22f90c9a547e12c868c?d=identicon)[igorkri](/maintainers/igorkri)

---

Top Contributors

[![igorkri](https://avatars.githubusercontent.com/u/29359219?v=4)](https://github.com/igorkri "igorkri (4 commits)")

### Embed Badge

![Health badge](/badges/igorkri-yii2-tree-manager/health.svg)

```
[![Health](https://phpackages.com/badges/igorkri-yii2-tree-manager/health.svg)](https://phpackages.com/packages/igorkri-yii2-tree-manager)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
