Skip to content

mazurva/yii2-nestable2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yii2-nestable2

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

tree

Installation

The preferred way to install this extension is through composer.

Either run

$ php composer.phar require mazurva/yii2-nestable2 "dev-master"

or add

"mazurva/yii2-nestable2": "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 mazurva\nestable2\widgets\Nestable;

class yourClass extends Controller
{
    public function actions() {
        return [
            'nodeMove' => [
                'class' => 'mazurva\nestable2\actions\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

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published