kasoft / yii2-jstree
jsTree 是一个 jQuery 插件,提供交互式树形图
Requires
- php: >=7.2
- vakata/jstree: 3.3.*
- yiisoft/yii2: ~2.0.22
README
jsTree for Yii2 是一个扩展,用于通过 jsTree 显示和处理 ActiveRecord 模型。
- 使用 AJAX 加载树形数据并显示树
- 为不同的树节点定义图标(例如使用 FontAwesome)
- 上下文菜单,包括更新、重命名和删除
- 通过拖放移动树节点
- 上下文子菜单,包含不同的节点类型
- 动态上下文菜单,可以删除特定类型的项
- 单独的文本和上下文菜单消息
安装
安装此扩展的首选方式是通过 composer。
或者运行
php composer.phar require --prefer-dist kasoft/yii2-jstree "1.0.14"
或者添加
"kasoft/yii2-jstree": "1.0.14",
到您的 composer.json
文件的 require 部分。
最新消息
版本 1.0.16
- 移除了不必要的 Bootstrap 依赖
版本 1.0.14
- 通过 initialOpenId 定义节点的 id,该 id 在加载后将被打开
版本 1.0.13
- 在 standardMsg 中可以设置单独的 "新节点" 文本
版本 1.0.12
- 修复了重复项缺少图标的问题
版本 1.0.11
- 新功能:在上下文菜单中使用模型重复添加重复项
- 创建或重复时,将 Yii2 错误消息传输到 JavaScript Alert
- 移除特定类型的上下文菜单项(例如,对于类型 "page" 不允许 "删除")
版本 1.0.10
- 修复了 array_merge 错误
版本 1.0.9
- 更多可翻译的文本
- 修复了重命名错误
版本 1.0.8
- 设置单独的上下文菜单文本和单独的警告消息
- 选择应显示哪个上下文菜单(创建、编辑、删除、重命名)
- 为每个条目设置单独的图标
- 设置一个创建子菜单,包含不同的新节点类型,并按照 JsTree 文档中所述的不同可能性定义这些节点类型(允许子节点、允许移动、设置图标)
版本 1.0.7
- 添加了 modelPropertyType,默认值为 + online/offline glyphicons
版本 1.0.6
- 修复了与 Yii 2.0.14 相关的问题,因为错误处理不同,树未显示
- 不再需要在 Controller 中进行 REQUEST 检查
版本 1.0.5
- 选择节点将通过 Ajax 触发更新操作,并在 .jstree-result div 中加载结果。如果找不到 .jstree-result,它将重定向到更新操作
- 将所有子菜单图标更改为 Glyhicon
版本 1.0.4
- 更新了 Composer 设置
版本 1.0.3
- 选择多个节点都将被删除
无模型使用(仅 JSON)
简单版本仅显示通过提供的 json url 提供的树。您必须通过一个 url 提供json数据
$tree = new \kasoft\jstree\JsTree([ 'jsonUrl' => '/my_jsonurl/data/whatever', ]);
<div id="jstree"></div>
使用 Yii2 模型
如果您想使用此扩展从数据中显示树,进行如移动、创建、删除、重命名等操作,并通过点击打开表单视图,请使用此版本。
在开始之前,检查您的数据库或模型!您是否有所有必需的字段?
除了数据库(与 MySQL 进行了测试)和一组用于排序和构建树的字段外,还需要一个 DIV 来显示树。扩展会为您处理创建、移动、重命名和删除。单击树项将在另一个 div 中显示表单以编辑数据。
请参阅 "demo" 文件夹中的测试设置!
设置您的数据库,包括所需的字段(可以有不同的名称)*名称 - 在树中显示的名称或标题(必需)*parent_id - 用于嵌套树的ID(必需)*位置 - 用于排序树项(必需)*类型 - 项目的类型,用于图标和权限(可选)
使用这些字段设置您的模型。重要:只有名称是必需字段!否则,"新建"的上下文菜单可能无法正常工作。
将以下内容添加到您的控制器中。所有带有(*)的项都是必需的!
<? public function actionIndex() { $tree = new \kasoft\jstree\JsTree([ 'modelName'=>'backend\models\MY_MODEL_NAME', // * Namespace of the Model 'modelPropertyId' => 'id' // * primary Key 'modelPropertyParentId' => 'parentId', // * Parent ID for tree items 'modelPropertyPosition' => 'position', // *for sorting items 'modelPropertyName' => 'name', // * Fieldname to show 'modelFirstParentId' => NULL, // * ID for the Tree to start 'modelPropertyType' => 'type', // Item type (for Icon and jsTree rights) 'controllerId' => 'index', // Controler Actions which should handle everything 'jstreeDiv' => '#jstree', // DIV where the Tree will be displayed 'jstreeIcons' => false, // Show Icons or not 'jstreePlugins' => ["contextmenu", "dnd",..], // Plugins to be load 'jstreeContextMenue' => [ // Define individual menu "remove" => [ "text" => "Delete", "icon" => "glyphicon glyphicon-plane", ], "edit" => [ "text" => "Edit", "icon" => "glyphicon glyphicon-picture", ], "create" => [ "text" => "Create new", "icon" => "glyphicon glyphicon-barcode", "type"=> "online", "submenu" => [ //Define submenu for creating node types ["text"=>"Create new with Type offline","icon" => "glyphicon glyphicon-barcode","type"=>"offline"], ["text"=>"Create new with Type online","icon" => "glyphicon glyphicon-plane", "type"=>"online"], ["text"=>"Create new with Type default","glyphicon glyphicon-volume-up","type"=>""], ] ], "rename" => [ "text" => "Rename", "icon" => "glyphicon glyphicon-volume-up", ], ], 'jstreeType' => [ // jsTree Type Options "#" => [ "max_children" => -1, "max_depth" => -1, "valid_children" => -1, "icon" => "glyphicon glyphicon-th-list" ], "default" => [ "icon" => "glyphicon glyphicon-question-sign" ], ], 'jstreeMsg' => [ // Individual Alert Messages "confirmdelete" => "Are you sure? Delete?", "nothere" => "Not possible at this Position!", ] ]); return $this->render('index'); } ?>
将此内容放入index视图文件中。点击一个项将委托更新操作到结果字段。此外,表单应该有一个名为"jstree-form"的类,以便将表单提交的结果委托到div。
<div id="jstree"></div> <div class="result"></div>