claudejanz / yii2-nested-sortable
an implementation of nestedSortable2.0
Installs: 7 561
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 2
Forks: 2
Open Issues: 0
Type:yii2-extension
Requires
- bower-asset/jquery-nested-sortable: *
- yiisoft/yii2: *
- yiisoft/yii2-jui: *
This package is auto-updated.
Last update: 2024-11-11 19:25:29 UTC
README
an implementation of nestedSortable2.0
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist claudejanz/yii2-nested-sortable "*"
or add
"claudejanz/yii2-nested-sortable": "*"
to the require section of your composer.json
file.
Prepare Model
In table migrateion:
$this->createTable('page', [ 'id' => $this->primaryKey(), 'title' => $this->string(255)->notNull(), 'parent_id' => $this->integer()->null(), 'weight' => $this->integer(11)->notNull()->defaultValue(1), ]); $this->createIndex('idx-page-parent_id', 'page', 'parent_id'); $this->addForeignKey('fk-page-parent_id-page-id', 'page', 'parent_id', 'page', 'id', 'SET NULL', 'CASCADE');
In ActiveRecord: for more details on Customizing Query Classes
/** * @inheridoc */ public static function find() { return (new PageQuery(get_called_class()))->orderBy('weight'); } /** * @return ActiveQuery */ public function getParent() { return $this->hasOne(Page::className(), ['id' => 'parent_id']); } /** * @return ActiveQuery */ public function getPages() { return $this->hasMany(Page::className(), ['parent_id' => 'id'])->inverseOf('parent'); }
Usage
Once the extension is installed, simply use it in your code by :
In view:
use claudejanz\yii2nestedSortable\NestedSortable; echo NestedSortable::widget([ 'items' => Page::find()->andWhere(['parent_id'=>null])->all(), 'url' => ['pages/save-sortable'], 'contentAttribute' => 'title'; 'itemsAttribute' => 'pages'; ]);
In controller:
public function actions() { return [ 'save-sortable' => [ 'class' => 'claudejanz\yii2nestedSortable\NestedSortableAction', //'scenario'=>'editable', //optional 'modelclass' => Page::className(), ], ]; }