Skip to content

devmedbooking/yii2-nestable

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yii2-nestable

Yii 2.0 implementation of nested set behavior using jquery.nestable plugin.

Installation

The preferred way to install this extension is through composer.

Either run

$ php composer.phar require slatiusa/yii2-nestable "dev-master"

or add

"slatiusa/yii2-nestable": "dev-master"

to the require section of your composer.json file.

Usage

Make sure you've attached the NestedSetsBehavior (creocoder/yii2-nested-sets) correctly to your model. Then add the node move handler to you controller by attaching the supplied action;

use slatiusa\nestable\Nestable;

class yourClass extends Controller
{
    public function actions() {
        return [
            'nodeMove' => [
                'class' => 'slatiusa\nestable\NodeMoveAction',
                'modelName' => TreeModel::className(),
            ],
        ];
    }

And then render the widget in your view;

echo Nestable::widget([
    'type' => Nestable::TYPE_WITH_HANDLE,
    'query' => TreeModel::find()->where([ top of tree ]),
    'modelOptions' => [
        'name' => 'name'
    ],
    'pluginEvents' => [
        'change' => 'function(e) {}',
    ],
    'pluginOptions' => [
        'maxDepth' => 7,
    ],
]);

You can either supply an ActiveQuery object in query from which a tree will be built. You can also supply an item list;

    ...
    'items' => [
        ['content' => 'Item # 1', 'id' => 1],
        ['content' => 'Item # 2', 'id' => 2],
        ['content' => 'Item # 3', 'id' => 3],
        ['content' => 'Item # 4 with children', 'id' => 4, 'children' => [
            ['content' => 'Item # 4.1', 'id' => 5],
            ['content' => 'Item # 4.2', 'id' => 6],
            ['content' => 'Item # 4.3', 'id' => 7],
        ]],
    ],

The modelOptions['name'] should hold an attribute name that will be used to name on the items in the list. You can alternatively supply an unnamed function($model) to build your own content string.

Supply a pluginEvents['change'] with some JavaScript code to catch the change event fired by jquery.nestable plugin. The pluginOptions accepts all the options for the original jquery.nestable plugin.

About

Yii 2.0 implementation of nested set behavior using jquery.nestable plugin.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 54.6%
  • PHP 32.0%
  • CSS 13.4%