igorkri / yii2-tree-manager
一个增强型树管理模块,使用嵌套集进行树节点选择和处理。
dev-main
2023-06-08 09:32 UTC
Requires
- ausi/slug-generator: ^1.1
- creocoder/yii2-nested-sets: >=0.9
- kartik-v/yii2-dialog: >=1.0
- kartik-v/yii2-krajee-base: >=3.0.4
- kartik-v/yii2-widget-activeform: >=1.6.2
- kartik-v/yii2-widget-fileinput: dev-master
This package is auto-updated.
Last update: 2024-09-08 12:11:47 UTC
README
$ composer require igorkri/yii2-tree-manager "~1.0.0"
或添加
"igorkri/yii2-tree-manager": "~1.0.0"
到你的 composer.json
文件的 require
部分。
用法
步骤 1:准备数据库
创建一个数据库表来存储树结构。你可以通过以下方式之一实现
选项 1:运行数据库迁移
你可以在 Yii 程序控制台中运行提供的迁移脚本,以从数据库中创建结构
php yii migrate/up --migrationPath=@vendor/igorkri/yii2-tree-manager/src/migrations
选项 2:执行 SQL 脚本
或者,你可以执行 SQL 脚本来生成你的数据库结构。复制并修改 migrations/tree.sql
文件(一个 MySQL 示例),以创建 tbl_tree
表(或任何你需要的表名)。
注意:你可以向此表添加需要的列,但不能跳过/删除脚本中提到的任何列。如果你选择重命名
id
、root
、lft
、rgt
、lvl
、name
、icon
、icon_type
列,你可以选择在模块中相应地设置这些列。
或者,你可以配置你的模型不扩展自 igorkri\tree\models\Tree
,而是实现并使用 igorkri\tree\models\TreeTrait
namespace frontend\models; use Yii; class Tree extends \yii\db\ActiveRecord { use igorkri\tree\models\TreeTrait; /** * @inheritdoc */ public static function tableName() { return 'tbl_tree'; } }
步骤 3:设置模块
在你的 Yii 配置文件的模块部分配置名为 treemanager
的模块。
'modules' => [ 'treemanager' => [ 'class' => '\igorkri\tree\Module', // other module settings, refer detailed documentation ] ]
步骤 4:使用 TreeView 小部件
在你的视图文件中,你现在可以直接使用树视图来管理树数据,如下所示
use igorkri\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 igorkri\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], ]);