FileManager中文名叫文件管理器,也叫文件浏览器,它给我们提供了一个可视化的界面来管理文件和文件夹。利用FileManager,我们可以对文件进行浏览、增加、打印、修改(文件属性)、重命名、搜索等等一大堆非常有用的操作。

CKeditor相信朋友们都非常熟悉了,它是一种富文本编辑器,不再赘述。

现在我们来演示如何将FileManager和CKeditor整合到laravel中去。

Install FileManager

Require filemanater

将filemanager加入到composer.json中我们用bestmomo/filemanager

require : {

"laravel/framework": "5.2.*",

"bestmomo/filemanager": "1.1.*"

}

Update Composer

$ composer update

更新完成后,将service provider加入到config/app.php中

/**

* App/Config/App.php

*/

Bestmomo\Filemanager\FilemanagerServiceProvider::class,

发布

$ php artisan vendor:publish --provider="Bestmomo\Filemanager\FilemanagerServiceProvider"

在User模型中添加2个权限方法

/**

* App/Http/Models/User.php

*/

/**

* Check media all access

*

* @return bool

*/

public function accessMediasAll(){

return $this->role->slug == 'admin';

}

/**

* Check media access one folder

*

* @return bool

*/

public function accessMediasFolder()

{

return $this->role->slug != 'user';

}

添加路由与方法

模型配置完了,就需要添加路由和控制器的方法了

路由

// route.php

Route::get('medias', ['as'=>'medias', 'uses'=>'Admin\AdminController@filemanager']);

配置文件

新建配置文件medias.php来配置引入的filemanager目录

// Config/medias.php

return [

/*

|--------------------------------------------------------------------------

| Url for filemanager

|--------------------------------------------------------------------------

*/

'url' => 'filemanager/index.html',

'url-files' =>'/public/filemanager/userfiles/'

];

方法

在控制器AdminController中我们添加filemanager方法

/**

* Show the media panel

*

* @return Response

*/

public function filemanager(){

$url = config('medias.url') . '?langCode=' . config('app.locale');

return view('backend.filemanager')->with(compact('url'));

}

filemanager.blade.php模板

@extends('backend.layout.master')

@section('head')

.iframe-responsive-wrapper {

position: relative;

}

.iframe-responsive-wrapper .iframe-ratio {

display: block;

width: 100%;

height: auto;

}

.iframe-responsive-wrapper iframe {

position: absolute;

top: 0;

left: 0;

width: 100%;

height: 100%;

}

#page-wrapper {

background-color: #222;

}

.page-header {

color: #ddd;

}

@stop

@section('main')

@include('backend.partials.entete', ['heading' => trans('backend/medias.dashboard'), 'operation'=>'', 'symbol' => 'file-image-o', 'superior' => trans('backend/medias.medias')])

@stop

到了这里,整个FileManager就整合到了laravel中,但我在实际运行中,报了一个小错误:

call_user_func_array() expects parameter 1 to be a valid callback, class 'Kbwebs\MultiAuth\Guard' does not have a method 'accessMediasAll'

说是'Kbwebs\MultiAuth\Guard'没有accessMediasAll方法。

原因是我在laravel5.1中做了多用户验证功能,安装了'Kbwebs\MultiAuth\Guard'插件,所以在所有要获取User模型的时候都要加上一个user(), 比如 Auth::user->user(), auth()->user()->user()

解决方法:

找到有accessMediaAll和accessMediasFolder的文件/filemanager/connectors/php/default.config.php

/**

* Filemanager PHP connector

* This file should at least declare auth() function

* and instantiate the Filemanager as '$fm'

*

* IMPORTANT : by default Read and Write access is granted to everyone

* Copy/paste this file to 'user.config.php' file to implement your own auth() function

* to grant access to wanted users only

*

* filemanager.php

* use for ckeditor filemanager

*

* @license MIT License

* @author Simon Georget

* @copyright Authors

*/

// Laravel init

require getcwd() . '/../../../../bootstrap/autoload.php';

$app = require_once getcwd() . '/../../../../bootstrap/app.php';

$kernel = $app->make('Illuminate\Contracts\Http\Kernel');

$response = $kernel->handle(

$request = Illuminate\Http\Request::capture()

);

$id = $app['encrypter']->decrypt($_COOKIE[$app['config']['session.cookie']]);

$app['session']->driver()->setId($id);

$app['session']->driver()->start();

// Folder path

$folderPath = config('filemanager.folder_path');

// Check if user in authentified

if(!$app['auth']->check())

{

$laravelAuth = false;

}

else

{ //print_r($app['auth']->user()->user()->accessMediasAll());exit;

// Check if user has all access

if($app['auth']->user()->accessMediasAll())

{

$laravelAuth = true;

}

elseif(method_exists($app['auth']->user(), 'accessMediasFolder'))

{

// Check if user has access to one folder

if($app['auth']->user()->accessMediasFolder())

{

// Folder name with user id

$folderPath .= 'user' . $app['auth']->id();

$laravelAuth = true;

}

else

{

$laravelAuth = false;

}

}

else

{

$laravelAuth = false;

}

}

分别将

$app['auth']->user()->accessMediasAll()

$app['auth']->user()

$app['auth']->user()->accessMediasFolder()

$app['auth']->id()

改为

$app['auth']->user()->user()->accessMediasAll()

$app['auth']->user()->user()

$app['auth']->user()->user()->accessMediasFolder()

$app['auth']->user()->id()

FileManager界面

上面的代码更新完成后,已经可以看到FileManager的文件管理界面

bVLEsG?w=1624&h=264

引入CKeditor

下载CKeditor并解压到public文件夹后,在页面中引入ckeditor/ckeditor.js

CKEDITOR.replace( 'summary');

config['height'] = 400;

CKEDITOR.replace( 'content');

如果要实现ckeditor从FileManager中导入文件,则需要修改filebrowserBrowseUrl选项

var config = {

filebrowserBrowseUrl : '/filemanager/index.html'

}

CKEDITOR.replace( 'summary', config);

config['height'] = 400;

CKEDITOR.replace( 'content', config);

ckeditor上传图片的效果图

bVLExl?w=931&h=503

php set medias,laravel5.1 -- Integrate FileManager and CKeditor into laravel相关推荐

  1. php laravel框架 rce分析 cve-2018-15133

    本文将记录在 APP_KEY 泄露情况下的 Laravel RCE 漏洞.该漏洞可以分别在两个地方触发,一个是直接添加在 cookie 字段,例如: Cookie: ATTACK=payload :另 ...

  2. php基于laravel框架的批量插入操作

    在日常开发中,用到批量插入的操作还是挺多的.记得很早很早以前,我还是在循环中写sql插入,结果被项目经理按在地上摩擦.好吧,性能这东西,用不到的时候还好,万一性能成为瓶颈,那代码优化,数据库优化就首当 ...

  3. Laravel 实践之路: 数据库迁移与数据填充

    数据库迁移实际上就是对数据库库表的结构变化做版本控制,之前对数据库库表结构做修改的方式比较原始,比如说对某张库表新增了一个字段,都是直接在库表中执行alter table xxx add .. 的方式 ...

  4. [ Laravel 5.5 文档 ] 快速入门 —— 使用 Laragon 在 Windows 中搭建 Laravel 开发环境

    简介 之前学院君陆续写了三篇介绍 Laravel 开发环境的教程:Homestead.Valet 和 LaraDock,我都是在 Mac 系统中安装使用的,相当流畅,没有任何梗,但是对于那些使用 Wi ...

  5. ckeditor4 自定义组件之文字格式组件,类加粗,类下划线(vue项目)

    先看效果: ckeditor4自定义组件官方文档中有两种,第一种是点按钮增加内容,别的文章都能搜到:第二种是点按钮出现弹窗,设置弹窗内容,然后点确定,这种也能搜到,在官方文档中也有.但是我的需求是给文 ...

  6. 表mysql.item模板不存在_关于laravel的最热门问题合集

    关于laravel的最热门问题合集,有技术问题,上 bug200.com 如何让查询生成器将其原始SQL查询输出为字符串? https://bug200.com/post/18236294 给出以下代 ...

  7. Laravel 精选资源大全

    必备品 文档:Documentation API:API Reference 视频:Laracasts 新闻:Laravel News 中文文档 Laravel学院– Laravel 5.1 中文文档 ...

  8. stream !_实时Laravel通知和关注? 当然,有了Stream!

    stream ! This article was peer reviewed by Wern Ancheta and Younes Rafie. Thanks to all of SitePoint ...

  9. laravel + vue 创建后台+开始到结束

    搭建过程 注意:这里要去报你本地已经安装好了composer 1.新建 Laravel5.5 项目 在 Web 服务器目录下,使用 Composer 建立laravel新项目 composer cre ...

最新文章

  1. HashMap的put和get操作
  2. linux 杀软 clamav 帮助选项翻译
  3. docker删除所有容器_如何在Linux上创建,列出和删除Docker容器
  4. Linux下xz与tar的区别
  5. 【深度学习】ResNet——CNN经典网络模型详解(pytorch实现)
  6. 内核层 inlinehook 隐藏进程
  7. 最原创的验证码产生过程,桃花朵朵开
  8. 子网掩码相关教学 子网掩码快速算法 沉睡不醒blog
  9. 用于Activity管理和应用程序退出
  10. Application.Current的使用
  11. Linux cannot remove 'XXX': Is a directory 解决办法
  12. idea 报错is already defined as class
  13. 杭电计算机学院研究生校区,杭州电子科技大学研究生在哪个校区
  14. 不动产登记收费一览表
  15. 升级 XPLite 中的 IE
  16. Pygame显示文字
  17. python中的取整
  18. casio计算机隐藏游戏fx-82ES,CASIOlowbar;fx-82ES计算器隐藏功能
  19. 华为交换机用命令更改已有admin账户开启SSH
  20. feifeicms 火车头文章采集 自动图片本地化

热门文章

  1. 【实验楼】python简明教程
  2. 2022-2028年中国铁路机车行业投资分析及前景预测报告
  3. 数据结构(08)— 线性单链表基本操作
  4. 【Sql Server】DateBase-结构化查询基础
  5. 自然语言处理深度学习篇-BiLSTM文本挖掘实践 命名实体识别
  6. torch.nn.Embedding理解
  7. 八种基本类型的包装类你真的懂了?
  8. 总结笔记-Activity的启动流程
  9. TS中的感叹号和问号的用法
  10. android weight(权重)的具体分析