laravel5.1--将FileManager和CKeditor集成到laravel中
时间:2023-03-29 19:22:00
PHP
.iframe-responsive-wrapper{position:relative;}.iframe-responsive-wrapper.iframe-ratio{显示:块;宽度:100%;高度:自动;}.iframe-responsive-wrapperiframe{位置:绝对;顶部:0;左:0;宽度:100%;高度:100%;}#page-wrapper{背景色:#222;}.page-header{颜色:#ddd;}FileManager中文名是文件管理器,也叫文件浏览器,它为我们提供了一个可视化的界面来管理文件和文件夹。使用FileManager,我们可以对文件进行浏览、添加、打印、修改(文件属性)、重命名、搜索等很多非常实用的操作。CKeditor相信小伙伴们都非常熟悉了。是富文本编辑器,这里不再赘述。下面我们来演示如何将FileManager和CKeditor集成到laravel中。安装FileManagerRequirefilemanager在composer.json中添加filemanager我们使用bestmomo/filemanagerrequire:{"laravel/framework":"5.2.*","bestmomo/filemanager":"1.1.*"}UpdateComposer$composerupdate更新完成后,添加服务提供者到config/app.php/***App/Config/App.php*/Bestmomo\Filemanager\FilemanagerServiceProvider::class,publish$phpartisanvendor:publish--provider="Bestmomo\Filemanager\FilemanagerServiceProvider"向User模型添加2个权限方法/***App/Http/Models/User.php*//***检查媒体所有访问**@returnbool*/publicfunctionaccessMediasAll(){return$this->角色->slug=='admin';}/***检查媒体访问一个文件夹**@returnbool*/publicfunctionaccessMediasFolder(){return$this->role->slug!='user';}添加路由和方法模型配置完成后,需要添加路由和控制器方法。路由//route.phpRoute::get('medias',['as'=>'medias','uses'=>'Admin\AdminController@filemanager']);配置文件新的配置文件medias.php配置导入的filemanager目录//Config/medias.php'filemanager/index.html','url-files'=>'/public/filemanager/userfiles/'];方法在控制器AdminController中,我们添加文件管理器方法/***显示媒体面板**@returnResponse*/publicfunctionfilemanager(){$url=config('medias.url').'?langCode='.config('app.locale');返回视图('backend.filemanager')->with(compact('url'));}filemanager.blade.phptemplate@extends('backend.layout.master')@section('head').iframe-responsive-wrapper{position:relative;}.iframe-responsive-wrapper.iframe-ratio{显示:块;宽度:100%;高度:自动;}.iframe-responsive-wrapperiframe{位置:绝对;顶部:0;左:0;宽度:100%;高度:100%;}#page-wrapper{背景色:#222;}.page-header{颜色:#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中,但是在实际运行中,报错了:称呼_user_func_array()expectsparameter1tobeavalidcallback,class'Kbwebs\MultiAuth\Guard'doesnothaveamethod'accessMediasAll'说是'Kbwebs\MultiAuth\Guard'没有accessMediasAll方法原因是我在laravel5.1做了一个多用户认证功能,安装了'Kbwebs\MultiAuth\Guard'插件,所以我要获取User模型的时候必须加一个user(),比如Auth::user->user(),auth()->user()->user()解决方法:找到文件/filemanager/connectors/php/default.config.php*@版权作者*///Laravelinitrequiregetcwd()。'/../../../../bootstrap/autoload.php';$app=require_oncegetcwd()。'/../../../../bootstrap/app.php';$kernel=$app->make('Illuminate\Contracts\Http\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();//文件夹路径$folderPath=config('文件管理器.folder_path');//检查用户是否在authentifiedif(!$app['auth']->check()){$laravelAuth=false;}else{//print_r($app['auth']->user()->user()->accessMediasAll());退出;//检查用户是否拥有所有访问权限if($app['auth']->user()->accessMediasAll()){$laravelAuth=true;}elseif(method_exists($app['auth']->user(),'accessMediasFolder')){//检查用户是否有权访问一个文件夹if($app['auth']->user()->accessMediasFolder()){//具有用户ID的文件夹名称$folderPath.='user'.$app['auth']->id();$laravelAuth=真;}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/ckeditor.js。替换(“摘要”);配置['高度']=400;CKEDITOR.replace('内容');如果要实现ckeditor从FileManager导入文件,需要修改filebrowserBrowseUrl选项varconfig={filebrowserBrowseUrl:'/filemanager/index.html'}CKEDITOR.replace('summary',config);配置['高度']=400;CKEDITOR.replace('内容',配置);ckeditor上传图片效果图