PHPackages                             besnovatyj/yii2-cms-tree-manager - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. besnovatyj/yii2-cms-tree-manager

ActiveYii2-extension[Utility &amp; Helpers](/categories/utility)

besnovatyj/yii2-cms-tree-manager
================================

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

v1.0.2(2w ago)0113MITPHPPHP &gt;=8.4

Since Jul 6Pushed 1mo agoCompare

[ Source](https://github.com/besnovatyj/yii2-cms-tree-manager)[ Packagist](https://packagist.org/packages/besnovatyj/yii2-cms-tree-manager)[ RSS](/packages/besnovatyj-yii2-cms-tree-manager/feed)WikiDiscussions master Synced 1w ago

READMEChangelogDependencies (8)Versions (4)Used By (3)

besnovatyj/yii2-cms-tree-manager
================================

[](#besnovatyjyii2-cms-tree-manager)

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`npmTS-виджет дерева (framework-agnostic, порт `ITreeDataSource`)`besnovatyj/yii2-nested-sets`composerPHP-ядро 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
-------

[](#license)

MIT — см. [LICENSE](./LICENSE). Автор: Besnovatyj.

###  Health Score

44

—

FairBetter than 90% of packages

Maintenance93

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~14 days

Total

3

Last Release

19d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4dab004c4cab25d241bbf453f63cb48e6226d00bd84f50315e735c257c4a1b40?d=identicon)[besnovatyj](/maintainers/besnovatyj)

---

Top Contributors

[![besnovatyj](https://avatars.githubusercontent.com/u/1440158?v=4)](https://github.com/besnovatyj "besnovatyj (29 commits)")

---

Tags

cmsyii2nested setstree-manager

### Embed Badge

![Health badge](/badges/besnovatyj-yii2-cms-tree-manager/health.svg)

```
[![Health](https://phpackages.com/badges/besnovatyj-yii2-cms-tree-manager/health.svg)](https://phpackages.com/packages/besnovatyj-yii2-cms-tree-manager)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.7M3.4k](/packages/craftcms-cms)[skeeks/cms

SkeekS CMS — control panel and tools based on php framework Yii2

13926.0k66](/packages/skeeks-cms)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
