Search by

besnovatyj / yii2-cms-file-manager

besnovatyj

Standalone-виджет файлового менеджера для Yii2 (ядро filemanager-core + AssetBundle + PHP-виджет). Без CKEditor.

Package info

github.com/besnovatyj/yii2-cms-file-manager

Type:yii2-extension

pkg:composer/besnovatyj/yii2-cms-file-manager

Statistics

Installs: 12

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

v1.1.1 2026-09-18 17:30 UTC

This package is auto-updated.

Last update: 2026-09-18 17:32:28 UTC


README

Standalone-виджеты файлового менеджера для Yii2 — без CKEditor. Тонкие обёртки над npm-ядрами: здесь только сборка ядра в собственный dist/ + PHP-виджет и AssetBundle. Вся логика ФМ — в ядре.

Две линии (обе живут в пакете до полной замены v1 на v2):

Линия Ядро Entry → dist PHP
v2 (проводник) @besnovatyj/filemanager-core2 assets/explorer.tsdist/explorer.js ExplorerWidget, ExplorerAsset
v1 @besnovatyj/filemanager-core assets/index.tsdist/file-manager.js FileManagerWidget, FileManagerCoreAsset

Серверная часть обеих линий — модуль besnovatyj/yii2-cms-file: v2 ходит на /File/backend/api/{operation} (контракт bescms-fs, см. filemanager-core2/docs/API-CONTRACT.md), v1 — на /File/backend/file-manager.

Сборка (Node только в Docker)

# 1) ядро v2 (и v1, если оно нужно):
docker compose exec node sh -c 'cd /home/node/app/packages/npm/filemanager-core2 && npm install && npm run build'

# 2) обёртка:
docker compose exec node sh -c 'cd /home/node/app/vendor/besnovatyj/yii2-cms-file-manager && npm install && npm run build:local'

build:local (FM_CORE_LOCAL=1) берёт ядра из локальных packages/npm/*/dist; build — из node_modules (ядро v2 пока подключено file:-зависимостью, после публикации в npm заменить на версию). dist/ коммитится — потребляющий проект Node не использует.

v2: ExplorerWidget

Picker в форме

use Besnovatyj\FileManager\ExplorerWidget;

echo $form->field($model, 'image')->widget(ExplorerWidget::class, [
    'startPath' => '/static/blog',
    'pickFilter' => 'image',       // только изображения
    // 'returnAttribute' => 'path', // что класть в поле: url (по умолчанию) | path | name
    // 'pickMultiple' => true, 'multipleSeparator' => "\n",
]);

Кнопка открывает проводник в окне; «Выбрать» (или двойной клик по файлу) кладёт значение в поле и закрывает окно. Если у файла нет публичного URL (например, ZIP-хранилище), подставляется path.

Просто открыть менеджер

echo ExplorerWidget::widget(['triggerLabel' => 'Файлы']);

Встроить в страницу

echo ExplorerWidget::widget(['embedded' => true, 'height' => 'calc(100vh - 220px)', 'startPath' => '/static']);

Свойства

Свойство По умолчанию Назначение
model/attribute, name/value picker через ActiveForm / без модели
showInput true поле рядом с кнопкой (авто-false без модели и name)
returnAttribute 'url' url / path / name выбранного узла
pickMultiple, multipleSeparator false, "\n" множественный выбор
pickFilter null 'image' — только изображения
embedded, height, containerOptions false, '600px', [] встроенный режим
connector '/File/backend/api' базовый URL API
startPath '/' стартовый виртуальный путь (/ — список хранилищ)
scope null запереть менеджер в поддереве (UI + подписанный токен для сервера)
headers [] доп. заголовки поверх CSRF/Ajax
title '' заголовок окна
storageKey null (= fm2:view) ключ localStorage настроек вида; '' — не сохранять
theme 'auto' auto / light / dark
clientConfig [] любые поля ExplorerConfig ядра (функции — JsExpression)

Мобильные устройства: раскладка и модель тапов подстраиваются автоматически (см. filemanager-core2/docs/INTERACTION.md). Большие файлы грузятся кусками с докачкой (tus), если бэкенд это объявляет (filemanager-core2/docs/UPLOAD-TUS.md).

Транслитерация кириллицы в именах загружаемых файлов — настройка бэкенда (modules.File.params.fs.naming.transliterate), у виджета опции нет: имя формирует сервер.

v1: FileManagerWidget

Без изменений, см. историю пакета. Используйте только там, где v2 ещё не проверен.