kazak71 / laravel-elfinder
一个用于集成elFinder 2的Laravel包
Requires
- php: >=7.0
- illuminate/support: ^5.5|^6|^7|^8|^9.0|^10.0|^11.0
- kazak71/elfinder-flysystem-driver: ^0.3
- league/flysystem: ^1.0|^3.0
- studio-42/elfinder: ~2.1.49
This package is auto-updated.
Last update: 2024-09-04 09:40:49 UTC
README
由 barryvdh/laravel-elfinder 分支而来
此包通过Composer(+自动加载)提供php文件,并通过发布命令提供资源,集成了elFinder 2.1。它还提供了一些示例视图,包括独立、tinymce和ckeditor。文件从单独的构建仓库更新
注意:为了未来的更改,请使用
php artisan elfinder:publish代替旧的发布命令!
安装
使用Composer要求此包
composer require kazak71/laravel-elfinder
将ServiceProvider添加到app/config/app.php中的providers数组
Barryvdh\Elfinder\ElfinderServiceProvider::class
您需要使用以下Artisan命令将资源复制到public文件夹
php artisan elfinder:publish
请记住在每次更新后发布资源(或将命令添加到composer.json中的post-update-cmd)
路由已添加到ElfinderServiceProvider中。您可以在配置中设置路由的分组参数。您还可以更改路由的前缀或过滤器/中间件。如果需要完全自定义,可以扩展ServiceProvider并重写map()函数。
配置
默认配置需要在public文件夹中创建一个名为'files'的目录。您可以通过发布配置文件来更改此设置。
php artisan vendor:publish --provider='Barryvdh\Elfinder\ElfinderServiceProvider' --tag=config
在您的config/elfinder.php中,您可以通过发布配置文件来更改默认文件夹、访问回调或定义自己的根目录。
视图
您可以通过复制资源/views文件夹来覆盖默认视图。您也可以使用vendor:publish命令完成此操作
php artisan vendor:publish --provider='Barryvdh\Elfinder\ElfinderServiceProvider' --tag=views
使用文件系统磁盘
Laravel 5具有使用Flysystem适配器作为本地/云磁盘的能力。您可以使用disks配置将这些磁盘添加到elFinder中。
此示例添加了local磁盘和my-disk
'disks' => [ 'local', 'my-disk' => [ 'URL' => url('to/disk'), 'alias' => 'Local storage', ] ],
您可以为提供额外的选项(如URL、别名等)添加数组。有关所有选项的详细信息,请查看此处。
使用Glide处理图片
有关Glide的使用,请参阅elfinder-flysystem-driver。以下是一个使用自定义Laravel磁盘和Glide的基本示例
-
将磁盘添加到您的app/config/filesystems disks配置
'public' => [ 'driver' => 'local', 'root' => base_path().'/public', ],
提示:如果您想使用非默认的Flysystem磁盘,可以使用
extend方法注册自己的驱动程序 -
为您的磁盘创建一个Glide服务器,例如,在
glide/<path>路由上,使用缓存路径Route::get('glide/{path}', function($path){ $server = \League\Glide\ServerFactory::create([ 'source' => app('filesystem')->disk('public')->getDriver(), 'cache' => storage_path('glide'), ]); return $server->getImageResponse($path, Input::query()); })->where('path', '.+');
-
将磁盘添加到您的elfinder配置
'disks' => [ 'public' => [ 'glideURL' => '/glide', ], ],
-
(可选)将
glideKey也添加到配置中,并在Glide路由中使用Glide HttpSignature验证密钥
现在您应该在elFinder中看到一个名为'public'的根目录,其中包含您的public文件夹中的文件,由Glide生成的缩略图。URL也将指向Glide服务器,用于图片。
TinyMCE 5.x
您可以使用以下路由 /elfinder/tinymce5 与TinyMCE 5集成
route('elfinder.tinymce5');
在TinyMCE初始化代码中,添加以下行
file_picker_callback : elFinderBrowser
然后添加以下函数(将elfinder_url更改为您系统上的正确路径)
function elFinderBrowser (callback, value, meta) { tinymce.activeEditor.windowManager.openUrl({ title: 'File Manager', url: elfinder_url, /** * On message will be triggered by the child window * * @param dialogApi * @param details * @see https://www.tiny.cloud/docs/ui-components/urldialog/#configurationoptions */ onMessage: function (dialogApi, details) { if (details.mceAction === 'fileSelected') { const file = details.data.file; // Make file info const info = file.name; // Provide file and text for the link dialog if (meta.filetype === 'file') { callback(file.url, {text: info, title: info}); } // Provide image and alt text for the image dialog if (meta.filetype === 'image') { callback(file.url, {alt: info}); } // Provide alternative source and posted for the media dialog if (meta.filetype === 'media') { callback(file.url); } dialogApi.close(); } } }); }
TinyMCE 4.x
您可以使用以下路由来使用tinyMCE集成,默认路由是/elfinder/tinymce4
route('elfinder.tinymce4');
在TinyMCE初始化代码中,添加以下行
file_browser_callback : elFinderBrowser
然后添加以下函数(将elfinder_url更改为您系统上的正确路径)
function elFinderBrowser (field_name, url, type, win) { tinymce.activeEditor.windowManager.open({ file: '<?= route('elfinder.tinymce4') ?>',// use an absolute path! title: 'elFinder 2.0', width: 900, height: 450, resizable: 'yes' }, { setUrl: function (url) { win.document.getElementById(field_name).value = url; } }); return false; }
tinyMCE 3.x
您可以通过以下路由添加tinyMCE集成(默认:/elfinder/tinymce)
route('elfinder.tinymce');
在TinyMCE初始化代码中,添加以下行
file_browser_callback : 'elFinderBrowser'
然后添加以下函数(将elfinder_url更改为您系统上的正确路径)
function elFinderBrowser (field_name, url, type, win) { var elfinder_url = '/elfinder/tinymce'; // use an absolute path! tinyMCE.activeEditor.windowManager.open({ file: elfinder_url, title: 'elFinder 2.0', width: 900, height: 450, resizable: 'yes', inline: 'yes', // This parameter only has an effect if you use the inlinepopups plugin! popup_css: false, // Disable TinyMCE's default popup CSS close_previous: 'no' }, { window: win, input: field_name }); return false; }
CKeditor 4.x
您可以通过以下路由添加CKeditor集成
'elfinder.ckeditor'
在CKeditor配置文件中
config.filebrowserBrowseUrl = '/elfinder/ckeditor';
独立弹出选择器
要使用href、按钮或其他元素触发弹出窗口以使用elFinder,您需要执行以下操作。
添加对弹出窗口的支持,我们使用了Jacklmoore的jQuery colorbox(未包含),但您可以使用任何其他,当然需要相应地调整以下说明。
添加所需路由
您可以使用以下动作添加弹出窗口
'Barryvdh\Elfinder\ElfinderController@showPopup'
添加所需资源
确保您已按照上述说明发布了此包的公共资产。然后,在您页面的<head>部分中包含所需的colorbox样式(我们建议使用example1样式,但任何样式都行)
<link href="/assets/css/colorbox.css" rel="stylesheet">
Colorbox依赖于jQuery,因此请确保您已在页面上包含它,然后在您的jQuery文件之后,添加jQuery Colorbox的脚本,例如...
<script type="text/javascript" src="/assets/js/jquery.colorbox-min.js"></script>
现在在您的<body>标签关闭之前添加对弹出脚本的超链接。还提供了一个非最小化版本,以便您可以根据需要修改colorbox配置。只需将其复制到您的资产位置,并根据需要进行调整/压缩。
<script type="text/javascript" src="/packages/barryvdh/elfinder/js/standalonepopup.min.js"></script>
用法
为了使用查找器填充输入,请添加您希望填充的输入,确保使用ID(这将在选择文件/图像后更新值)...
<label for="feature_image">Feature Image</label> <input type="text" id="feature_image" name="feature_image" value="">
现在只需添加您希望用来触发弹出窗口的元素,确保添加类popup_selector和包含与您希望填充的输入的ID匹配值的data-inputid属性,如下所示。
<a href="" class="popup_selector" data-inputid="feature_image">Select Image</a>
您可以在页面上放置任意数量的元素,只需确保每个元素都有一个唯一的ID,并在选择器上相应地设置data-updateid属性。