myorb/yii2-tree-manager

一个增强的树管理模块,使用嵌套集合进行树节点选择和操作。

安装: 4

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 107

类型:yii2-extension

v1.0.8 2017-04-29 15:57 UTC

This package is auto-updated.

Last update: 2024-09-07 15:18:01 UTC


README

Stable Version Unstable Version License Total Downloads Monthly Downloads Daily Downloads

一个增强的树管理模块,来自 Krajee,使用嵌套集合进行树节点选择和操作。以下列出了扩展的功能:

  • 一个完整的树管理解决方案,提供管理使用嵌套集合存储的分层数据的能力。利用 yii2-nested-sets 扩展来管理数据库中的树结构。在开始使用此模块之前,请参阅 yii2-nested-sets 扩展的文档。
  • 一个从头开始构建的纯视图,不使用任何第三方插件。TreeView 是使用 HTML5、jQuery 和 CSS3 特性设计的,以与 Yii PHP 框架协同工作。
  • 使用 CSS3 样式,包括 jQuery 过渡和用于 AJAX 内容的加载部分,包含嵌入的警报,并使用 Bootstrap CSS。
  • 树管理功能选项和模式
    • 使用 TreeView 小部件作为选择器,并通过动态渲染的表单来编辑树节点,以查看、编辑或管理树结构。
    • 表单既可以作为节点的详细视图,也可以作为管理工具来添加/编辑/删除节点。
    • 表单通过 AJAX 渲染。当相同的节点再次点击时(除非节点已被修改),它会智能地使用缓存。
    • 独特的管理员模式,允许对树进行管理员操作。
    • 添加、编辑或删除树节点的能力
    • 重新排序树节点(向上、向下、向左或向右移动)的能力
    • 配置树节点图标、样式,并将复选框添加到树节点的能力
    • 在模块中启用了 i18N 翻译。
  • 包括各种 jQuery 插件事件,这些事件在触发各种树操作时被触发。
  • 附加功能:包括一个 TreeViewInput 小部件,允许您将 TreeView 用作输入小部件。TreeViewInput 小部件由 Krajee 独特设计(使用 jQuery、PHP 和 HTML5/CSS),看起来像一个下拉选择菜单。它允许从树中选择多个或单个值/节点。
  • 一个基于 yii2-nested-set 模型的树模型,旨在易于扩展以适应各种用例。它包括每个树节点的预构建标志。有关更多信息,请参阅 Tree 模型文档。
  • active:树节点是否为活动状态(如果启用了软删除,则树节点将只是停用而不是从数据库中删除)。
  • selected:树节点是否默认选中。
  • disabled:禁用树节点以进行编辑或重新排序。
  • readonly:只读的树节点,防止编辑,但可以重新排序或向上/向下移动。
  • visible:树节点是否默认可见。
  • collapsed:树节点是否默认折叠。
  • movable_u:树节点是否允许向上移动。
  • movable_d:树节点是否允许向下移动。
  • movable_l:树节点是否允许向左移动。
  • movable_r:树节点是否允许向右移动。
  • removable:树节点是否可删除 - 如果存在子节点,则不会删除。如果启用了软删除,则节点将被停用 - 否则从数据库中删除。
  • removable_all:树节点及其子节点是否可删除。如果启用了软删除,则节点及其子节点将被停用 - 否则从数据库中删除。

此模块提供了以下重要的 PHP 类:

  1. kartik\tree\Module: 模块,允许您配置模块。您必须设置一个名为 treemanager 的模块。请参考文档获取详细信息。
  2. kartik\tree\TreeView: 小部件,允许您在管理员模式或普通用户模式下使用操作和工具栏来添加、编辑、重新排序或删除树节点。
  3. kartik\tree\TreeViewInput: 小部件,允许您将树视图用作下拉输入,无论是单选还是多选。
  4. kartik\tree\models\Tree: 模型,使用从 yii2-nested-sets 的嵌套集行为管理的整个树数据结构。
  5. kartik\tree\models\TreeQuery: 查询,用于嵌套集模型的查询类。
  6. 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 表(或任何所需的表名)。

注意:您可以向此表添加所需的列,但不能跳过/删除脚本中提到的任何列。如果您选择重命名 idrootlftrgtlvlnameiconicon_type 列,则必须在模块中相应地设置这些列。

步骤 2:设置模型

创建一个模型来存储树结构,扩展 kartik\tree\models\Tree 类。您还可以从 yii\db\ActiveRecord 扩展构建自己的模型,但将其修改为使用 kartik\tree\models\TreeTrait。您必须在模型中提供表名。可选地,您还可以添加规则或编辑如 isVisibleisDisabled 等各种方法,以识别节点的允许标志。

因此,从 \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许可证发布。有关详细信息,请参阅捆绑的LICENSE.md文件。