php set medias,laravel5.1 -- Integrate FileManager and CKeditor into laravel
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的文件管理界面
引入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上传图片的效果图
php set medias,laravel5.1 -- Integrate FileManager and CKeditor into laravel相关推荐
- php laravel框架 rce分析 cve-2018-15133
本文将记录在 APP_KEY 泄露情况下的 Laravel RCE 漏洞.该漏洞可以分别在两个地方触发,一个是直接添加在 cookie 字段,例如: Cookie: ATTACK=payload :另 ...
- php基于laravel框架的批量插入操作
在日常开发中,用到批量插入的操作还是挺多的.记得很早很早以前,我还是在循环中写sql插入,结果被项目经理按在地上摩擦.好吧,性能这东西,用不到的时候还好,万一性能成为瓶颈,那代码优化,数据库优化就首当 ...
- Laravel 实践之路: 数据库迁移与数据填充
数据库迁移实际上就是对数据库库表的结构变化做版本控制,之前对数据库库表结构做修改的方式比较原始,比如说对某张库表新增了一个字段,都是直接在库表中执行alter table xxx add .. 的方式 ...
- [ Laravel 5.5 文档 ] 快速入门 —— 使用 Laragon 在 Windows 中搭建 Laravel 开发环境
简介 之前学院君陆续写了三篇介绍 Laravel 开发环境的教程:Homestead.Valet 和 LaraDock,我都是在 Mac 系统中安装使用的,相当流畅,没有任何梗,但是对于那些使用 Wi ...
- ckeditor4 自定义组件之文字格式组件,类加粗,类下划线(vue项目)
先看效果: ckeditor4自定义组件官方文档中有两种,第一种是点按钮增加内容,别的文章都能搜到:第二种是点按钮出现弹窗,设置弹窗内容,然后点确定,这种也能搜到,在官方文档中也有.但是我的需求是给文 ...
- 表mysql.item模板不存在_关于laravel的最热门问题合集
关于laravel的最热门问题合集,有技术问题,上 bug200.com 如何让查询生成器将其原始SQL查询输出为字符串? https://bug200.com/post/18236294 给出以下代 ...
- Laravel 精选资源大全
必备品 文档:Documentation API:API Reference 视频:Laracasts 新闻:Laravel News 中文文档 Laravel学院– Laravel 5.1 中文文档 ...
- stream !_实时Laravel通知和关注? 当然,有了Stream!
stream ! This article was peer reviewed by Wern Ancheta and Younes Rafie. Thanks to all of SitePoint ...
- laravel + vue 创建后台+开始到结束
搭建过程 注意:这里要去报你本地已经安装好了composer 1.新建 Laravel5.5 项目 在 Web 服务器目录下,使用 Composer 建立laravel新项目 composer cre ...
最新文章
- HashMap的put和get操作
- linux 杀软 clamav 帮助选项翻译
- docker删除所有容器_如何在Linux上创建,列出和删除Docker容器
- Linux下xz与tar的区别
- 【深度学习】ResNet——CNN经典网络模型详解(pytorch实现)
- 内核层 inlinehook 隐藏进程
- 最原创的验证码产生过程,桃花朵朵开
- 子网掩码相关教学 子网掩码快速算法 沉睡不醒blog
- 用于Activity管理和应用程序退出
- Application.Current的使用
- Linux cannot remove 'XXX': Is a directory 解决办法
- idea 报错is already defined as class
- 杭电计算机学院研究生校区,杭州电子科技大学研究生在哪个校区
- 不动产登记收费一览表
- 升级 XPLite 中的 IE
- Pygame显示文字
- python中的取整
- casio计算机隐藏游戏fx-82ES,CASIOlowbar;fx-82ES计算器隐藏功能
- 华为交换机用命令更改已有admin账户开启SSH
- feifeicms 火车头文章采集 自动图片本地化