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

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

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

besnovatyj/yii2-cms-file-manager

Composer 安装命令:

composer require besnovatyj/yii2-cms-file-manager

包简介

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

README 文档

README

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

Это «брат» виджета редактора besnovatyj/yii2-cms-ckeditor5: тот монтирует CKEditor, этот — чистый файловый менеджер. Для интеграции ФМ внутрь редактора используется отдельный CKEditor-плагин besnovatyj/ckeditor5-filemanager.

Что внутри

assets/index.ts                 # реэкспорт публичного API ядра (createApp, …) → dist/file-manager.js
esbuild.js                      # сборка: ядро filemanager-core бандлится внутрь, CSS уже вшит в JS
src/FileManagerWidget.php       # PHP-виджет: кнопка-триггер + init-модуль (createApp().open())
src/FileManagerCoreAsset.php    # AssetBundle: публикует dist/file-manager.js (JS грузится import()-ом)
dist/                           # собранный file-manager.js (КОММИТИТСЯ — потребляется без Node)

ckeditor5 нигде не участвует. dist/file-manager.js — ESM-модуль с именованным экспортом createApp, который виджет грузит динамическим import().

Сборка TS (нужен Node/Docker)

# 1) сначала собрать ядро (виджет бандлит его dist):
( cd ../../npm/filemanager-core && npm install && npm run build )

# 2) затем виджет:
npm install        # подтянет @besnovatyj/filemanager-core по file:../../npm/filemanager-core
npm run build      # → dist/file-manager.js (ядро вбандлено, CSS вшит)

dist/ коммитится в git. Потребляющий проект Node не использует.

Использование

Picker в форме (ActiveForm)

Поле + кнопка; двойной клик по файлу кладёт его URL (или иной атрибут) в поле:

use Besnovatyj\FileManager\FileManagerWidget;

echo $form->field($model, 'image')->widget(FileManagerWidget::class, [
    'fmDefaultPath' => '/blog',
    // 'returnAttribute' => 'path', // что класть в поле: url (по умолчанию) | path | key | name
]);

Или напрямую:

echo FileManagerWidget::widget([
    'model' => $model,
    'attribute' => 'image',
]);

Просто открыть менеджер (browser-режим)

Без модели и name поле не выводится — только кнопка, открывающая ФМ:

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

Настройки виджета

Свойство По умолчанию Назначение
model/attribute picker через ActiveForm
name/value picker без модели
showInput true выводить ли поле (авто-false, если нет ни модели, ни name)
returnAttribute 'url' свойство выбранного файла, кладущееся в поле (url/path/key/name)
triggerLabel 'Файловый менеджер' подпись кнопки
triggerOptions [] HTML-опции кнопки
fmConnector '/file/backend/file-manager' URL коннектора бэкенда ФМ (серверная часть — в yii2-cms-file)
fmDefaultPath '/' стартовая директория и путь загрузки по умолчанию
fmHeaders [] доп. HTTP-заголовки (мёржатся поверх CSRF/Ajax-заголовков)

Бэкенд-коннектор (file-manager) живёт в файловом модуле besnovatyj/yii2-cms-file — это серверная часть, к которой обращается ФМ; URL настраивается свойством fmConnector.

统计信息

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

GitHub 信息

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

其他信息

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

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固