yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法


Posted in PHP onApril 20, 2016

我们接下来就来聊聊Yii2框架是如何整合百度编辑器umeditor的。

umeditor是啥,我只听过ueditor,你这umeditor是不是盗版的东东喃?umeditor呢,说白了就是mini版的ueditor,按照百度官方说法,其实就是编辑器中的"短软小",但是功能俱全。咳咳,咱们回归正题。

首先勒,咱们先去官网下载一份mini版的ueditor umeditor,注意哦,是um editor。

下载下来解压放到项目根目录下面的 /css目录下 命名为umeditor,具体位置各位随意,后面能引用的到就行。

第二步,我们先去扩展下backend\assets\Appset类,哎呀我擦,为啥要扩展这么个玩意,跟咱们的umeditor整合啥关系勒,半路杀出个程咬金出来。这里扩展下这个类文件的意图是为了接下来在文件中方便引入css js文件滴。

很简单,在Appset方法中增加下面两个方法即可

//定义按需加载JS方法,注意加载顺序在最后 
public static function addScript($view, $jsfile) { 
$view->registerJsFile($jsfile, [AppAsset::className(), 'depends' => 'backend\assets\AppAsset']); 
} 
//定义按需加载css方法,注意加载顺序在最后 
public static function addCss($view, $cssfile) { 
$view->registerCssFile($cssfile, [AppAsset::className(), 'depends' => 'backend\assets\AppAsset']); 
}

接下来,按照下面的配置即可。

先做说明,此处我们假设有一个文章article表,有一个内容content字段需要显示为百度编辑器。

按照yii2的表单模型来看,我们修改article\_form.php文件中的content字段

<?= $form->field($model, 'content')->textarea(['style' => 'width:760px;height:500px;']) ?>

该文件引入Appset类并引入相关的css js文件如下

use backend\assets\AppAsset;
AppAsset::register($this);
AppAsset::addCss($this,'/css/umeditor/themes/default/css/umeditor.css');
AppAsset::addScript($this,'/css/umeditor/umeditor.config.js');
AppAsset::addScript($this,'/css/umeditor/umeditor.min.js');
AppAsset::addScript($this,'/css/umeditor/lang/zh-cn/zh-cn.js');

然后只需要在当前页面底部注册下面的js代码即可实现

<?php $this->beginBlock('js-block') ?>
$(function () {
var um = UM.getEditor('article-content', {
});
});
<?php $this->endBlock() ?>
<?php $this->registerJs($this->blocks['js-block'], \yii\web\View::POS_END); ?>

关于article-content怎么来滴喃,这个就是我们要绑定的目标对象,即content。article-content是当前该对象的id标识。

ok,到此百度编辑器基本上整合完毕,现在赶快去添加一篇文章试试看吧,记得更新看看编辑器里面是否也有内容哦。

下面给大家介绍 yii2解决百度编辑器umeditor图片上传问题。

yii2框架整合了百度编辑器,因为文件上传采用的是yii2自带的UploadedFile,这就难免umeditor上传不成功问题,解决问题的只需要两个操作步骤,我们来看看具体实现

首先我们先把umeditor的配置搞好,这里只需要更改imageUrl配置项即可,我们修改其指向/tools/um-upload

那下一步自然是实现/tools/um-upload方法了,

按照ueditor的实现来看,这里我们上传成功后只需要返回成功信息即可

use backend\models\Upload;
use yii\web\UploadedFile;
/**
* 百度umeditor上传
*/
public function actionUmUpload ()
{
$model = new Upload();

if (Yii::$app->request->isPost) {

$model->file = UploadedFile::getInstance($model, 'file');

$dir = ‘文件保存目录';
if (!is_dir($dir))
mkdir($dir);

if ($model->validate()) {
$fileName = $model->file->baseName . '.' . $model->file->extension;
$dir = $dir.'/'. $fileName;
$model->file->saveAs($dir);
$info = [
"originalName" => $model->file->baseName,
"name" => $model->file->baseName,
"url" => $dir,
"size" => $model->file->size,
"type" => $model->file->type,
"state" => 'SUCCESS',
];
exit(json_encode($info));
} 
}
}

特别提醒:上述返回的$info信息中state状态只能是SUCCESS,区分大小写

PHP 相关文章推荐
第十四节 命名空间 [14]
Oct 09 PHP
PHP中的正规表达式(二)
Oct 09 PHP
使PHP自定义函数返回多个值
Nov 26 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
php无限遍历目录示例
Feb 21 PHP
php面向对象中static静态属性和静态方法的调用
Feb 08 PHP
PHP调试的强悍利器之PHPDBG
Feb 22 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
php判断用户是否关注微信公众号
Jul 22 PHP
Laravel如何友好的修改.env配置文件详解
Jun 07 PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 PHP
PHP 实现缩略图
Mar 09 PHP
又拍云异步上传实例教程详解
Apr 19 #PHP
ThinkPHP中order()使用方法详解
Apr 19 #PHP
ThinkPHP中limit()使用方法详解
Apr 19 #PHP
ThinkPHP中where()使用方法详解
Apr 19 #PHP
yii2中的rules 自定义验证规则详解
Apr 19 #PHP
PHP序列化/对象注入漏洞分析
Apr 18 #PHP
php实现三级级联下拉框
Apr 17 #PHP
You might like
PHP实现多文件上传的方法
2015/07/08 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
setTimeout与setInterval在不同浏览器下的差异
2010/01/24 Javascript
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
jQuery.getScript加载同域JS的代码
2012/02/13 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
2013/12/20 Javascript
Javascript验证方法大全
2015/09/21 Javascript
JS实现异步上传压缩图片
2017/04/22 Javascript
jquery实现简单实用的轮播器
2017/05/23 jQuery
vue 中自定义指令改变data中的值
2017/06/02 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
手把手带你入门微信小程序新框架Kbone的使用
2020/02/25 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
[49:12]完美世界DOTA2联赛PWL S2 Magma vs GXR 第二场 11.29
2020/12/02 DOTA
Python multiprocessing.Manager介绍和实例(进程间共享数据)
2014/11/21 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
python numpy数组的索引和切片的操作方法
2018/10/20 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
解决Djang2.0.1中的reverse导入失败的问题
2019/08/16 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
时装界的“朋克之母”:Vivienne Westwood
2017/07/06 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
如何从一个文件档案的尾端新增记录
2016/12/02 面试题
公务员转正鉴定材料
2014/02/11 职场文书
火车的故事教学反思
2014/02/11 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
校长师德表现自我评价
2015/03/05 职场文书
民事二审代理词
2015/05/25 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android