定制 besnovatyj/yii2-cms-tree-manager 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

besnovatyj/yii2-cms-tree-manager

Composer 安装命令:

composer require besnovatyj/yii2-cms-tree-manager

包简介

Добавление управления Nested Sets в другие модули Yii2 CMS.

README 文档

README

Yii2-фасад управления деревьями: TreeManager (CRUD-фасад), generic TreeController (9 экшенов), PHP TreeWidget + AssetBundle с собранным JS-виджетом, TreeDataSource (AR → DTO), TreeQueryScope (read-утилиты). Потребители (menu, catalog, actors, …) импортируют только Besnovatyj\TreeManager\Manager\*.

Три пакета

Пакет Тип Роль
@besnovatyj/tree-widget-core npm TS-виджет дерева (framework-agnostic, порт ITreeDataSource)
besnovatyj/yii2-nested-sets composer PHP-ядро Nested Sets (Service/Repository/ColumnMap/Exception)
этот пакет composer фасад: связывает виджет и ядро в Yii2-модулях

Структура пакета

assets/src/        # тонкий entry: реэкспорт npm-ядра (+ yii2-дефолты, если появятся)
assets/dist/       # собранный IIFE-бандл + CSS — его публикует TreeAsset (коммитится)
esbuild.js         # сборка assets/src -> assets/dist (бандлит @besnovatyj/tree-widget-core)
package.json       # private, сборочный (не публикуется в npm)
src/nested-sets-manager/   # PHP-фасад (подробный README и примеры интеграции — внутри)
docs/ACCEPTANCE-CHECKLIST.md  # чеклист приёмки изменений (фаза 0)
TODO.MD            # план и журнал разделения на пакеты

Сборка фронтенда

При правках ядра — сначала опубликовать его, затем пересобрать фасад:

# 1. ядро (packages/npm/tree-widget-core): npm publish  (prepublishOnly: build + types)
# 2. фасад (корень этого пакета):
npm update @besnovatyj/tree-widget-core && npm run build

assets/dist/ коммитится (точнее — едет с пакетом: composer-потребителю npm не нужен).

Интеграция в модуль

Полное руководство (DI-контейнер, Node/формы, controllerMap, TreeWidget-конфиг, endpoints, серверные формы) — src/nested-sets-manager/README.md. Кратко:

// Module.php
$this->controllerMap['category'] = [
    'class' => TreeController::class,
    'treeManager' => Instance::of('gallery.tree.manager'),
    'dataSource' => new TreeDataSource(Category::class, ...),
    'createFormClass' => CategoryForm::class,
    'updateFormClass' => CategoryForm::class,
    'formView' => '@Besnovatyj/Gallery/views/backend/category/_form',
    // серверный enforcement прав (опционально; `permissions` виджета — только UX):
    'checkAccess' => fn(string $op, ?Node $node) => Yii::$app->user->can("gallery.tree.{$op}"),
];

Контракт ошибок (TreeController::execute()): доменные (NestedSetsException, DomainException) → HTTP 422 со своим сообщением; ошибки валидации форм → 200 + success:false + errors; прочее → детали в лог, наружу нейтральный 500.

License

MIT — см. LICENSE. Автор: Besnovatyj.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-07-06

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固