rezident/yii2-nested-set-plus

此扩展允许您获得嵌套集树的功能,以及用于在视图中显示和操作嵌套数据的部件。

安装: 12

依赖项: 0

建议者: 0

安全性: 0

星级: 0

关注者: 0

分支: 6

类型:yii2-extension

v0.2.6 2016-04-17 22:52 UTC

This package is auto-updated.

Last update: 2024-08-29 00:03:24 UTC


README

此扩展是wbraganca/yii2-nested-set-behavior的分支。

它是为了在我们的内部项目中使用而开发的,但您也可以在自己的项目中使用和/或修改它。

wbraganca的嵌套集行为一样,此扩展允许您获得嵌套集树的功能,并包括一个基于dbushell/Nestable jQuery 插件的部件,用于显示拖放分层列表,并具有鼠标和触摸兼容性。

安装

安装此扩展的首选方式是通过 composer

运行以下命令

php composer.phar require rezident/yii2-nested-set-plus "*"

"rezident/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());
    }
}

leftAttributerightAttributerootAttributelevelAttribute 选项中指定的字段不需要进行验证。此外,如果存在这些字段的验证规则,则可能会出现问题。请检查模型 rules() 方法中是否有针对这些字段的规则。

对于存储单个数据库中的单个树,可以使用 schema/schema.sql 构建数据库结构。如果您打算存储多个树,则需要使用 schema/schema-many-roots.sql

默认情况下,leftAttributerightAttributelevelAttribute 的值与默认数据库模式中的字段名称相匹配,因此您可以跳过这些配置。

此行为可以通过两种方式工作:每个表一个树或每个表多个树。模式的选择基于 hasManyRoots 选项的值,默认为 false,表示单个树模式。在多树模式下,您可以设置 rootAttribute 选项以匹配存储树的表中的现有字段。

与嵌套集行为一起工作

有关如何使用嵌套数据的信息,请参阅原始插件文档

请注意,从 NestedSetQueryBehavior 类中删除了用于与 Fancytree 一起获取和准备数据的方

相反,添加了 NestedSetQueryBehavior::tree() 方法,该方法返回嵌套可拖动列表部件的树数据。

使用嵌套可拖动列表部件

use kgladkiy\widgets\NestedList;

echo NestedList::widget([
    'items' => $treeData, // $treeData = Category::find()->tree();
    'actions' => true, // set to false for disable 'edit' and 'delete' buttons
]);