arter / yii2-tree-manager
一个增强的树管理模块,使用嵌套集合进行树节点选择和操作。
Requires
This package is auto-updated.
Last update: 2024-09-24 21:54:54 UTC
README
Krajee提供的增强型树管理模块,使用嵌套集合进行树节点选择和操作。以下列出扩展功能:
- 一个完整的树管理解决方案,能够管理使用嵌套集合存储的层次数据。利用yii2-nested-sets扩展来管理数据库中的树结构。在开始使用此模块之前,请参阅yii2-nested-sets扩展的文档。
- 从头开始构建的树视图,没有任何第三方插件。TreeView使用HTML5、jQuery和CSS3功能设计,与Yii PHP框架协同工作。
- 使用CSS3样式化,包含jQuery过渡效果和用于ajax内容的加载部分,包含内嵌警告,并使用bootstrap CSS。
- 树管理功能选项和模式
- 使用TreeView小部件作为选择器和动态渲染的表单来编辑树节点,通过TreeView小部件查看、编辑或管理树结构
- 该表单既可以作为节点的详细视图,也可以作为添加/编辑/删除节点的管理工具。
- 表单通过ajax渲染。如果再次点击相同的节点(除非节点已修改),则智能地使用缓存。
- 独特的管理员模式,允许对树进行管理员操作。
- 添加、编辑或删除树节点的能力
- 重新排序树节点(向上、向下、向左或向右移动)的能力
- 配置树节点图标、样式,并能够在树节点上添加复选框
- 在模块中启用了i18N翻译。
- 包括各种用于高级使用的jQuery插件事件,这些事件在执行各种树操作时被触发。
- 附加功能:包括一个名为TreeViewInput的小部件,允许将TreeView用作输入小部件。TreeViewInput小部件由Krajee独特设计(使用jQuery、PHP和HTML5/CSS),看起来像一个下拉选择菜单。它允许从树中选择多个值/节点或单个选择。
- 一个基于yii2-nested-set模型的树模型,旨在易于扩展以适应各种用例。它包括每个树节点的预建标志。请参阅树模型文档以获取更多信息。
- active:树节点是否处于活动状态(如果启用软删除,则树节点将仅停用而不是从数据库中删除)。
- selected:树节点是否默认选中。
- disabled:禁用树节点以进行编辑或重新排序。
- readonly:只读的树节点,阻止编辑,但可以重新排序或向上/向下移动。
- visible:树节点是否默认可见。
- collapsed:树节点是否默认折叠。
- movable_u:树节点是否允许向上移动。
- movable_d:树节点是否允许向下移动。
- movable_l:树节点是否允许向左移动。
- movable_r:树节点是否允许向右移动。
- removable:树节点是否可删除 - 如果存在子节点,则不会删除。如果启用软删除,则节点将被停用 - 否则从数据库中删除。
- removable_all:树节点及其子节点是否可删除。如果启用软删除,则节点及其子节点将被停用 - 否则从数据库中删除。
此模块提供了以下重要的PHP类
- kartik\tree\Module: 模块,允许您配置模块。您必须设置一个名为
treemanager
的模块。请参考文档获取详细信息。 - kartik\tree\TreeView: 小部件,允许您在管理模式或普通用户模式下,通过操作和工具栏来添加、编辑、重新排序或删除树节点来管理树。
- kartik\tree\TreeViewInput: 小部件,允许您将 TreeView 作为下拉输入使用,无论是单选还是多选。
- kartik\tree\models\Tree: 模型,使用 yii2-nested-sets 的嵌套集行为来管理树节点,这是整个树数据结构。
- kartik\tree\models\TreeQuery: 查询,对于嵌套集模型所需的查询类。
- kartik\tree\controllers\NodeController: 控制器,用于管理每个节点的创建、更新、删除或重新排序(移动)的控制器操作。
演示
您可以在 文档 和 TreeView 演示 或 TreeViewInput 演示 中查看扩展的详细使用说明。
安装
安装此扩展的首选方式是通过 composer。
注意:请检查此扩展的 composer.json 以了解其需求和依赖。阅读此 网络提示 /wiki 了解如何为您的应用程序的 composer.json 设置
minimum-stability
设置。
运行以下命令之一
$ php composer.phar require kartik-v/yii2-tree-manager "@dev"
或将以下内容添加到您的 composer.json
文件的 `
require`
部分。
"kartik-v/yii2-tree-manager": "@dev"
使用方法
步骤 1:准备数据库
创建一个数据库表来存储树结构。您可以通过以下方式之一完成此操作
选项 1:运行 DB 迁移
您可以使用提供的迁移脚本来从您的 yii 编程控制台创建数据库结构
php yii migrate/up --migrationPath=@vendor/kartik-v/yii2-tree-manager/migrations
选项 2:执行 SQL 脚本
或者,您可以执行 SQL 脚本来生成您的 DB 结构。复制并修改 migrations/tree.sql
文件(MySQL 示例),以创建 tbl_tree
表(或您需要的任何表名)。
>注意:您可以添加您需要的列到这个表,但不能跳过/删除脚本中提到的任何列。如果选择,您可以重命名 id
、root
、lft
、rgt
、lvl
、name
、icon
、icon_type
列,但这些必须在模块中相应设置。
步骤 2:设置模型
创建一个模型来存储树结构,它扩展了 kartik\tree\models\Tree
类。您可以另辟蹊径,从 yii\db\ActiveRecord
扩展自己的模型,但需要修改它以使用 kartik\tree\models\TreeTrait
。您必须在模型中提供表名。可选地,您可以添加规则,或编辑各种方法,如 isVisible
、isDisabled
等,以识别节点的允许标志。
因此,当从 \kartik\tree\models\Tree
扩展时,您可以设置为如下所示
namespace frontend\models;
use Yii;
class Tree extends \kartik\tree\models\Tree
{
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tbl_tree';
}
}
或者,您可以配置您的模型不扩展 kartik\tree\models\Tree
,而是实现并使用 kartik\tree\models\TreeTrait
namespace frontend\models;
use Yii;
class Tree extends \yii\db\ActiveRecord
{
use kartik\tree\models\TreeTrait.
/**
* @inheritdoc
*/
public static function tableName()
{
return 'tbl_tree';
}
}
步骤 3:设置模块
在您的 Yii 配置文件的模块部分中配置名为 treemanager
的模块。
'modules' => [
'treemanager' => [
'class' => '\kartik\tree\Module',
// other module settings, refer detailed documentation
]
]
步骤 4:使用 TreeView 小部件
在您的视图文件中,您现在可以直接使用树视图来管理树数据,如下所示
use kartik\tree\TreeView;
echo TreeView::widget([
// single query fetch to render the tree
'query' => Tree::find()->addOrderBy('root, lft'),
'headingOptions' => ['label' => 'Categories'],
'isAdmin' => false, // optional (toggle to enable admin mode)
'displayValue' => 1, // initial display value
//'softDelete' => true, // normally not needed to change
//'cacheSettings' => ['enableCache' => true] // normally not needed to change
]);
步骤 5:使用 TreeViewInput 小部件
如果您想使用树形输入来选择树项,可以使用如下所示的TreeViewInput小部件。通常情况下,您会将此作为下拉列表使用,并将asDropdown
属性设置为true
。如果将asDropdown
设置为false
,则树形视图输入小部件将以内联形式渲染以供选择。
use kartik\tree\TreeViewInput;
echo TreeViewInput::widget([
// single query fetch to render the tree
'query' => Tree::find()->addOrderBy('root, lft'),
'headingOptions' => ['label' => 'Categories'],
'name' => 'kv-product', // input name
'value' => '1,2,3', // values selected (comma separated for multiple select)
'asDropdown' => true, // will render the tree input widget as a dropdown.
'multiple' => true, // set to false if you do not need multiple selection
'fontAwesome' => true, // render font awesome icons
'rootOptions' => [
'label' => '<i class="fa fa-tree"></i>',
'class'=>'text-success'
], // custom root label
//'options' => ['disabled' => true],
]);
限制
yii2-tree-manager在BSD 3-Clause限制下发布。有关详细信息,请参阅附带文件PROSCRIPTION.md
。