yatskanich/mihaildev-yii2-elfinder-php84
Composer 安装命令:
composer require yatskanich/mihaildev-yii2-elfinder-php84
包简介
Yii2 ElFinder wih php 84 support
关键字:
README 文档
README
ElFinder — файловый менеджер для сайта.
Поддерживаемые хранилища
mihaildev/yii2-elfinder-flysystem - https://github.com/MihailDev/yii2-elfinder-flysystem/
Local
Azure
AWS S3 V2
AWS S3 V3
Copy.com
Dropbox
FTP
GridFS
Memory
Null / Test
Rackspace
ReplicateAdapter
SFTP
WebDAV
PHPCR
ZipArchive
Установка
Удобнее всего установить это расширение через composer.
Либо запустить
php composer.phar require --prefer-dist mihaildev/yii2-elfinder "*"
или добавить
"mihaildev/yii2-elfinder": "*"
в разделе require вашего composer.json файла.
Настройка
'controllerMap' => [ 'elfinder' => [ 'class' => 'mihaildev\elfinder\Controller', 'access' => ['@'], //глобальный доступ к фаил менеджеру @ - для авторизорованных , ? - для гостей , чтоб открыть всем ['@', '?'] 'disabledCommands' => ['netmount'], //отключение ненужных команд https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#commands 'roots' => [ [ 'baseUrl'=>'@web', 'basePath'=>'@webroot', 'path' => 'files/global', 'name' => 'Global' ], [ 'class' => 'mihaildev\elfinder\volume\UserPath', 'path' => 'files/user_{id}', 'name' => 'My Documents' ], [ 'path' => 'files/some', 'name' => ['category' => 'my','message' => 'Some Name'] //перевод Yii::t($category, $message) ], [ 'path' => 'files/some', 'name' => ['category' => 'my','message' => 'Some Name'], // Yii::t($category, $message) 'access' => ['read' => '*', 'write' => 'UserFilesAccess'] // * - для всех, иначе проверка доступа в даааном примере все могут видет а редактировать могут пользователи только с правами UserFilesAccess ] ], 'watermark' => [ 'source' => __DIR__.'/logo.png', // Path to Water mark image 'marginRight' => 5, // Margin right pixel 'marginBottom' => 5, // Margin bottom pixel 'quality' => 95, // JPEG image save quality 'transparency' => 70, // Water mark image transparency ( other than PNG ) 'targetType' => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field ) 'targetMinPixel' => 200 // Target image minimum pixel size ] ] ],
'controllerMap' => [ 'elfinder' => [ 'class' => 'mihaildev\elfinder\PathController', 'access' => ['@'], 'root' => [ 'path' => 'files', 'name' => 'Files' ], 'watermark' => [ 'source' => __DIR__.'/logo.png', // Path to Water mark image 'marginRight' => 5, // Margin right pixel 'marginBottom' => 5, // Margin bottom pixel 'quality' => 95, // JPEG image save quality 'transparency' => 70, // Water mark image transparency ( other than PNG ) 'targetType' => IMG_GIF|IMG_JPG|IMG_PNG|IMG_WBMP, // Target image formats ( bit-field ) 'targetMinPixel' => 200 // Target image minimum pixel size ] ] ],
Разница между PathController и Controller в том что PathController работает только с одной папкой также имеет доп возможность передать в запросе на открытие под деритории
На данный момент реализованно использование только LocalFileSystem хранилища (mihaildev\elfinder\volume\Local и mihaildev\elfinder\volume\UserPath) для использования остальных вам прийдётся всё настраивать через mihaildev\elfinder\volume\Base также добавленно расширение https://github.com/MihailDev/yii2-elfinder-flysystem/ это дополнение позволяет интегрировать Flysystem хранилища такие как Local Azure AWS S3 V2 AWS S3 V3 Copy.com Dropbox FTP GridFS Memory Null / Test Rackspace ReplicateAdapter SFTP WebDAV PHPCR ZipArchive
Настройка callback-ов для событий
'controllerMap' => [ 'elfinder' => [ ... 'managerOptions' => [ ... 'handlers' => [ 'select' => 'function(event, elfinderInstance) { console.log(event.data); console.log(event.data.selected); }', 'open' => 'function(event, elfinderInstance) {...}', ], ... ], ... ] ],
список событий - https://github.com/Studio-42/elFinder/wiki/Client-event-API#event-list
Настройка Плагинов
Изза сложной настройки была переделанна работа плагинов но возможность использовать старые плагины присутствует
'controllerMap' => [ 'elfinder' => [ 'class' => 'mihaildev\elfinder\Controller', //'plugin' => ['\mihaildev\elfinder\plugin\Sluggable'], 'plugin' => [ [ 'class'=>'\mihaildev\elfinder\plugin\Sluggable', 'lowercase' => true, 'replacement' => '-' ] ], 'roots' => [ [ 'baseUrl'=>'@web', 'basePath'=>'@webroot', 'path' => 'files/global', 'name' => 'Global', 'plugin' => [ 'Sluggable' => [ 'lowercase' => false, ] ] ], ]
Настройка старого плагина (на примере плагина Sanitizer)
'controllerMap' => [ 'elfinder' => [ 'class' => 'mihaildev\elfinder\Controller', 'connectOptions' => [ 'bind' => [ 'upload.pre mkdir.pre mkfile.pre rename.pre archive.pre ls.pre' => array( 'Plugin.Sanitizer.cmdPreprocess' ), 'ls' => array( 'Plugin.Sanitizer.cmdPostprocess' ), 'upload.presave' => array( 'Plugin.Sanitizer.onUpLoadPreSave' ) ], 'plugin' => [ 'Sanitizer' => array( 'enable' => true, 'targets' => array('\\','/',':','*','?','"','<','>','|'), // target chars 'replace' => '_' // replace to this ) ], ], 'roots' => [ [ 'baseUrl'=>'@web', 'basePath'=>'@webroot', 'path' => 'files/global', 'name' => 'Global', 'plugin' => [ 'Sanitizer' => array( 'enable' => true, 'targets' => array('\\','/',':','*','?','"','<','>','|'), // target chars 'replace' => '_' // replace to this ) ] ], ]
Использование
use mihaildev\elfinder\InputFile; use mihaildev\elfinder\ElFinder; use yii\web\JsExpression; echo InputFile::widget([ 'language' => 'ru', 'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder 'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes 'name' => 'myinput', 'value' => '', ]); echo $form->field($model, 'attribute')->widget(InputFile::className(), [ 'language' => 'ru', 'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder 'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes 'template' => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>', 'options' => ['class' => 'form-control'], 'buttonOptions' => ['class' => 'btn btn-default'], 'multiple' => false // возможность выбора нескольких файлов ]); echo ElFinder::widget([ 'language' => 'ru', 'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder 'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes 'callbackFunction' => new JsExpression('function(file, id){}') // id - id виджета ]);
Использование при работе с PathController
use mihaildev\elfinder\InputFile; use mihaildev\elfinder\ElFinder; use yii\web\JsExpression; echo InputFile::widget([ 'language' => 'ru', 'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder 'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории 'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes 'name' => 'myinput', 'value' => '', ]); echo $form->field($model, 'attribute')->widget(InputFile::className(), [ 'language' => 'ru', 'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder 'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории 'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes 'template' => '<div class="input-group">{input}<span class="input-group-btn">{button}</span></div>', 'options' => ['class' => 'form-control'], 'buttonOptions' => ['class' => 'btn btn-default'], 'multiple' => false // возможность выбора нескольких файлов ]); echo ElFinder::widget([ 'language' => 'ru', 'controller' => 'elfinder', // вставляем название контроллера, по умолчанию равен elfinder 'path' => 'image', // будет открыта папка из настроек контроллера с добавлением указанной под деритории 'filter' => 'image', // фильтр файлов, можно задать массив фильтров https://github.com/Studio-42/elFinder/wiki/Client-configuration-options#wiki-onlyMimes 'callbackFunction' => new JsExpression('function(file, id){}') // id - id виджета ]);
CKEditor
use mihaildev\elfinder\ElFinder; $ckeditorOptions = ElFinder::ckeditorOptions($controller,[/* Some CKEditor Options */]);
Для указания подкаталога (при использовании PathController)
use mihaildev\elfinder\ElFinder; $ckeditorOptions = ElFinder::ckeditorOptions([$controller, 'path' => 'some/sub/path'],[/* Some CKEditor Options */]);
Использование совместно с приложением "mihaildev/yii2-ckeditor" (https://github.com/MihailDev/yii2-ckeditor)
use mihaildev\ckeditor\CKEditor; use mihaildev\elfinder\ElFinder; $form->field($model, 'attribute')->widget(CKEditor::className(), [ ... 'editorOptions' => ElFinder::ckeditorOptions('elfinder',[/* Some CKEditor Options */]), ... ]);
Для указания подкаталога (при использовании PathController)
use mihaildev\ckeditor\CKEditor; use mihaildev\elfinder\ElFinder; $form->field($model, 'attribute')->widget(CKEditor::className(), [ ... 'editorOptions' => ElFinder::ckeditorOptions(['elfinder', 'path' => 'some/sub/path'],[/* Some CKEditor Options */]), ... ]);
Проблемы
При встраивание без iframe возможен конфликт с bootstrap.js. Studio-42/elFinder#740 Решение - добавляем в шаблон запись
mihaildev\elfinder\Assets::noConflict($this);
Полезные ссылки
ElFinder Wiki - https://github.com/Studio-42/elFinder/wiki
Flysystem
https://github.com/MihailDev/yii2-elfinder-flysystem/
https://github.com/barryvdh/elfinder-flysystem-driver
yatskanich/mihaildev-yii2-elfinder-php84 适用场景与选型建议
yatskanich/mihaildev-yii2-elfinder-php84 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 16 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 06 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「elfinder」 「yii」 「filemanager」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 yatskanich/mihaildev-yii2-elfinder-php84 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 yatskanich/mihaildev-yii2-elfinder-php84 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 yatskanich/mihaildev-yii2-elfinder-php84 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
The file manager intended for using Laravel with CKEditor / TinyMCE / Colorbox
Yii2 LightBox image galary widget uses Lightbox v2.10.0 by Lokesh Dhakar
Simple, fast, standalone PHP lib, that helps You to define, if any of your files were modified since last time You check - Is this file FRESH?
A Flysystem Driver for elFinder extended version
Effortless file management with Symfony UX and Mezcalito UX FileManager
Priveate for SkeekS CMS
统计信息
- 总下载量: 16
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 24
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2025-06-12