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
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-07-06