ale10257 / yii2-ext-for-work-nested-set
包含用于编辑嵌套集合树的控件和行为
dev-master
2019-05-17 03:58 UTC
Requires
- ale10257/yii2-ext-for-work-nested-set: dev-master
- creocoder/yii2-nested-sets: dev-master
- rmrevin/yii2-fontawesome: ~2.17
- yiisoft/yii2: ~2.0.0
This package is not auto-updated.
Last update: 2022-01-08 14:07:22 UTC
README
包含用于编辑嵌套集合树的控件和行为
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一:
composer require ale10257/yii2-ext-for-work-nested-set "dev-master"
或者
"ale10257/yii2-ext-for-work-nested-set": "dev-master"
将以下内容添加到您的 composer.json
文件的 require 部分。
功能
-
将菜单树作为表格生成(使用嵌套集合树)
-
拖放行表
-
将结果保存到数据库
移动前的示例表
移动
移动后
重要
只能拖动兄弟元素!!!
用法
模型
按照以下方式设置模型: https://github.com/creocoder/yii2-nested-sets 并确定常量 SITE_ROOT_NAME 和行为
<?php use creocoder\nestedsets\NestedSetsBehavior; use ale10257\ext\ChangeTreeBehavior; //... const SITE_ROOT_NAME = 'My_SITE_ROOT'; //... public function behaviors() { return [ [ 'class' => NestedSetsBehavior::className(), 'treeAttribute' => 'tree', ], [ 'class' => ChangeTreeBehavior::className(), 'rootSite' => SITE_ROOT_NAME ] ]; } //... ?>
查看 Category 的 index.php
//... <?php if($data) : ?> <div class="category-index"> <h1><?= Html::encode($this->title) ?></h1> <?= $this->render('tree', ['data' => $data]) ?> </div> <?php endif ?> //...
查看 tree.php
<?php use ale10257\ext\GetTreeWidget; use yii\helpers\Url; //Number tree in your Nested Set tree echo GetTreeWidget::widget([ 'options' => [ 'data' => $data, // action for ajax request for edit tree 'urlChangeTree' => Url::to(['/admin/category/update-tree']), 'urlUpdateTree' => Url::to(['/admin/category/update']), 'urlDeleteTree' => Url::to(['/admin/category/delete']), 'urlAddItem' => Url::to(['/admin/category/create']), // name field in your table for view 'fieldForTitleItem' => 'name', ] ]); ?>
控制器
<?php //... public function actionIndex() { $category = new Category; return $this->render('index', [ 'data' => $category->getTree(), ]); } //... //accepts the ajax request public function actionUpdateTree() { if (Yii::$app->request->isAjax) { $model = new Category(); $post = Yii::$app->request->post(); return $this->renderPartial('tree', ['data' => $model->updateTree($post)]); } return Yii::$app->request->referrer; } //... ?>