kgladkiy / yii2-nested-set-plus
本扩展允许您获取嵌套集合树的函数以及用于在视图中显示和处理嵌套数据的组件。
此软件包的规范存储库似乎已消失,因此软件包已被冻结。
Requires
- yiisoft/yii2: *
This package is not auto-updated.
Last update: 2020-07-24 18:54:10 UTC
README
此扩展是 wbraganca/yii2-nested-set-behavior 的分支。
它是为了在我们自己的内部项目中使用而开发的,但您也可以在您自己的项目中使用和/或修改它。
就像 wbraganca 的嵌套集合行为 一样,此扩展允许您获取嵌套集合树的功能,并且还包括一个基于 dbushell/Nestable jQuery 插件的 widget,用于显示和操作具有鼠标和触摸兼容性的拖放分层列表。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一:
php composer.phar require kgladkiy/yii2-nested-set-plus "*"
或
"kgladkiy/yii2-nested-set-plus": "*"
将以下内容添加到您的 composer.json
文件的 require 部分。
配置
首先您需要按以下方式配置模型
use kgladkiy\behaviors\NestedSetBehavior; use kgladkiy\behaviors\NestedSetQuery; class Category extends ActiveRecord { public function behaviors() { return [ [ 'class' => NestedSetBehavior::className(), // 'rootAttribute' => 'root', // 'levelAttribute' => 'level', // 'hasManyRoots' => true ], ]; } public static function find() { return new NestedSetQuery(get_called_class()); } }
在 leftAttribute
、rightAttribute
、rootAttribute
和 levelAttribute
选项中指定的字段不需要进行验证。此外,如果存在这些字段的验证规则,可能会出现问题。请检查模型规则()方法中是否没有提到这些字段的规则。
如果要在数据库中存储单个树,可以使用 schema/schema.sql
构建数据库结构。如果您打算存储多个树,则需要 schema/schema-many-roots.sql
。
默认情况下,leftAttribute
、rightAttribute
和 levelAttribute
的值与默认数据库模式中的字段名匹配,因此您可以跳过这些配置。
此行为可以以两种方式工作:每个表一个树和每个表多个树。根据 hasManyRoots
选项的值选择模式,默认值为 false
,表示单树模式。在多树模式下,您可以将 rootAttribute
选项设置为与存储树的表中的现有字段匹配。
使用嵌套集合行为
请参阅 原始插件文档 了解有关处理嵌套数据的信息。
请注意,从 NestedSetQueryBehavior
类中删除了用于使用 Fancytree 获取和准备数据的方 法。
相反,添加了方法 NestedSetQueryBehavior::tree()
,该方法返回嵌套可拖动列表 widget 的树数据。
使用嵌套可拖动列表 widget
use kgladkiy\widgets\NestedList; echo NestedList::widget([ 'items' => $treeData, // $treeData = Category::find()->tree(); 'actions' => true, // set to false for disable 'edit' and 'delete' buttons ]);