skylinegtrs / laravel-elfinder
用于集成 elFinder 2 的 Laravel 扩展包
Requires
- php: >=7.0
- barryvdh/elfinder-flysystem-driver: ^0.2
- illuminate/support: 5.5.x|5.6.x|5.7.x|5.8.x|6.x
- league/flysystem: ^1.0
- league/flysystem-cached-adapter: ^1.0
- studio-42/elfinder: ~2.1.10
This package is auto-updated.
Last update: 2024-09-11 23:14:24 UTC
README
此扩展包通过 Composer (+自动加载) 和发布命令提供 elFinder 2 的资源文件,同时提供了一些独立、tinymce 和 ckeditor 的示例视图。
注意:请使用
php artisan elfinder:publish
代替旧的发布命令,以支持未来的更改!
安装
使用 Composer 需要此扩展包
composer require skylinegtrs/laravel-elfinder
将 ServiceProvider 添加到 app/config/app.php 中的 providers 数组
SkylineGTRS\Elfinder\ElfinderServiceProvider::class
您需要使用以下 artisan 命令将资源文件复制到公共文件夹
php artisan elfinder:publish
请记住,在每次更新后(或将其添加到 composer.json 中的 post-update-cmd)发布资源文件
路由已在 ElfinderServiceProvider 中添加。您可以在配置中设置路由的组参数。您可以更改路由的前缀或过滤器/中间件。如果您想要完全自定义,您可以扩展 ServiceProvider 并覆盖 map()
函数。
配置
默认配置需要在公共文件夹中创建一个名为 'files' 的目录。您可以通过发布配置文件来更改此设置。
php artisan vendor:publish --provider='SkylineGTRS\Elfinder\ElfinderServiceProvider' --tag=config
在您的 config/elfinder.php 中,您可以更改默认文件夹、访问回调或定义自己的根目录。
视图
您可以通过复制资源/视图文件夹来覆盖默认视图。您也可以使用 vendor:publish
命令来完成此操作
php artisan vendor:publish --provider='SkylineGTRS\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 的基本示例:
-
将磁盘添加到您应用的 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 HttpSignature 在您的 glide 路由中验证密钥
现在,您应该在 elFinder 中看到一个根 'public',其中包含您的公共文件夹中的文件,并使用 Glide 生成的缩略图。图片的 URL 也将指向 Glide 服务器。
通过文件类型和数量(max_files)限制文件上传(以将其插入到视图中),专门为独立弹出窗口设计
例如,我们有几个部分,如新闻、产品、博客,对于这些部分允许不同的文件类型和要插入的图片数量,对于新闻 3,对于产品仅 1 张,对于博客 10。
默认情况下,我们传递以下 3 个参数,这些参数是必需的
<div class="popup_selector" data-type="[png,jpg,jpeg]" data-route="{{$route_name}}" data-inputid="Files" data-max-file-count="{{$max_files}}">
inputid - id of the inserted item
max_files - allowed maximum files for the sertein section
route_name - the name of the route(define name by yourself)
请发布视图以能够根据您的需求编辑默认的标记
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(未包含),但您可以使用任何其他,显然需要相应地调整以下说明。
添加所需路由
您可以使用以下操作添加弹出窗口:
'SkylineGTRS\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属性。