碎月玥 2018-04-18 18:42:22 2588次浏览 0条回复 2 0 0

1.下载 百度UEditor GitHub地址 https://github.com/BigKuCha/yii2-ueditor-widget

2.在web的同级目录新建widgets文件夹,如图

1524046662.png

3.把ueditor放入widgets文件夹

4.修改ueditor目录下的php文件的命名空间 例如 我的目录 gjj/backend/widgets/ueditor/Uploader.php

那么我的Uploader.php的代码为 namespace backend\widgets\ueditor;

5.配置ueditor的配置文件 config.php 我保存的目录为web/images/{rand:2}/ 修改 "imagePathFormat" => "images/{rand:2}/{time}{rand:6}" 注意:绝对路径在调用插件的控制器设置 "imageManagerListPath" => "images/", 注意:这个是配置图片显示的路径,如果没配置对,就会出现点击图片,显示出错

6.配置控制器 代码如下 /** 用于ueditor插件

 * (non-PHPdoc)
 * @see \yii\base\Controller::actions()
 * by suiyue
 */
public function actions(){
	$actions = parent::actions();
	$actions['upload'] = [
					'class'=>'backend\widgets\ueditor\UEditorAction',
					'config'=>[
							'imageUrlPrefix'=>"https://".$_SERVER['SERVER_NAME']."/gjj/backend/web/images/",//图片访问路径前缀
		   					'imagePathFormat'=>'{rand:2}/{time}{rand:6}',
		   				    'imageRoot'=>\Yii::getAlias("images")
					]
			];
	return $actions;
}

注意:如果控制器验证了action操作允许访问 _access(){} 要加入upload

7.为了和之前的编辑器所上传的资源路径相融合,一开始配置了绝对路径但是没有加入域名,导致目录创建失败, 然后 'imageUrlPrefix'=>"https://".$_SERVER['SERVER_NAME'] , 这样就成功了

8.但是这样配置,出现的问题是,读取的时候带了域名,存储数据到数据库也带了域名,这样很不美观,但是如果把域名去掉,就会出现之前的只是用绝对路径没有加入域名导致的目录创建失败。 9.接下来,我们解决这个问题!控制器设置图片路径前缀代码不改变,保持域名 A.打开ueditor.all.js 查找到function callback(){} 找到 24527行 修改link为绝对路径 如: link = "/gjj/backend/web/images/"+ json.url;

B. 设置_src属性为空 ,否则图片的src属性值会被_src属性值覆盖 loader.setAttribute('src', link);

C.找到 9967行 UE.plugins['defaultfilter'] = function () {return ;}

    这是过滤机制,直接在函数第一行return掉,不去跑下面的方法体
    

D.打开 ueditor.all.min.js 找到 imageUrlPrefix+f.url,"SUCCESS"==f.state&&f.url?(g=c.document.getElementById(d),g.setAttribute("src",e),g.setAttribute("_src",'e')

改为 imageUrlPrefix+f.url,"SUCCESS"==f.state&&f.url?(g=c.document.getElementById(d),g.setAttribute("src",e),g.setAttribute("_src",'')

10.最后一步,删除web/access下 ueditor的缓存文件,清空浏览器缓存,关闭浏览器,重新运行!

新增 单图上传修改了,但是多图上传还未修改。以下是多图上传修改步骤 1.打开ueditor.all.js

找到 function unhtmlData(imgCi) { 下面的11177行
可以看到 src被ci.src覆盖了 ci.src就是绝对路径,带了域名 如 http://www.baidu.com的

那么我们需要把域名去掉,所以需要重新赋值ci.src

加入代码段

if (opt.length == 1) { //这行代码的 下面加入

        	// 设置ci.src 
var pos=nthIndexOf(ci.src,"/",2);
var str=ci.src.substr(pos);
ci.src=str;

} else {

            for (var i = 0; ci = opt[i++];) {
                unhtmlData(ci);  //这行代码下面加入
var pos=nthIndexOf(ci.src,"/",2);
var str=ci.src.substr(pos);
//截取字符串
ci.src=str;

就这么简单,完工啦!记得清空web下的assets 目录哦,再清理服务器缓存,测试,搞定!

    没有找到数据。
您需要登录后才可以回复。登录 | 立即注册