igorkri / yii2-tree-manager
An enhanced tree management module with tree node selection and manipulation using nested sets.
Installs: 30
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- ausi/slug-generator: ^1.1
- creocoder/yii2-nested-sets: >=0.9
- kartik-v/yii2-dialog: >=1.0
- kartik-v/yii2-krajee-base: >=3.0.4
- kartik-v/yii2-widget-activeform: >=1.6.2
- kartik-v/yii2-widget-fileinput: dev-master
This package is auto-updated.
Last update: 2025-03-08 13:14:49 UTC
README
$ 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
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
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
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
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
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
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' => '<i class="fa fa-tree"></i>', 'class'=>'text-success' ], // custom root label //'options' => ['disabled' => true], ]);