pseudoagentur / soa-elfinder
用于集成 elFinder 2 的 Laravel 包
Requires
- php: >=5.4.0
- barryvdh/elfinder-flysystem-driver: 0.1.x@dev
- illuminate/support: 5.0.x|5.1.x|5.2.x
- studio-42/elfinder: 2.1.x
This package is not auto-updated.
Last update: 2017-10-12 09:14:18 UTC
README
对于 Laravel 4,请使用 0.2 分支!
此包通过 Composer (+自动加载) 提供了 php 文件和通过发布命令提供的资产,集成了 elFinder 2.1。它还提供了一些示例视图,包括独立、tinymce 和 ckeditor。文件从单独的 构建仓库 更新。
注意:请使用
php artisan elfinder:publish而不是旧的发布命令,以适应未来的更改!
安装
使用 Composer 安装此包
composer require barryvdh/laravel-elfinder
将 ServiceProvider 添加到 app/config/app.php 文件中的 providers 数组
'Barryvdh\Elfinder\ElfinderServiceProvider'
您需要使用以下 artisan 命令将资产复制到公共文件夹
php artisan elfinder:publish
记得在每次更新后发布资产(或将命令添加到 composer.json 中的 post-update-cmd)
路由已在 ElfinderServiceProvider 中添加。您可以在配置中设置路由的分组参数。您还可以更改路由的前缀或过滤器/中间件。如果需要完全自定义,您可以扩展 ServiceProvider 并覆盖 map() 函数。
配置
默认配置需要在公共文件夹中创建一个名为 'files' 的目录。您可以通过发布配置文件来更改此设置。
php artisan vendor:publish --provider='Barryvdh\Elfinder\ElfinderServiceProvider' --tag=config
在您的 config/elfinder.php 中,您可以更改默认文件夹、访问回调或定义自己的根。
视图
您可以通过复制 resources/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 处理图像
有关 elfinder-flysystem-driver 的 Glide 使用方法,请参阅。一个使用自定义 Laravel 磁盘和 Glide 的基本示例:
- 将磁盘添加到您的 apps 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 服务器,用于图像。
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 属性。