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 相关文章推荐
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
php GUID生成函数和类
Mar 10 PHP
ASP和PHP实现生成网站快捷方式并下载到桌面的方法
May 08 PHP
PHP随机生成唯一HASH值自定义函数
Apr 20 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
PHP文件上传类实例详解
Apr 08 PHP
php操作路径的经典方法(必看篇)
Oct 04 PHP
PHP符合PSR编程规范的实例分享
Dec 21 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
May 10 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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代码的53条建议
2008/03/27 PHP
用PHP获取Google AJAX Search API 数据的代码
2010/03/12 PHP
PHP自定义多进制的方法
2016/11/03 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
Javascript常用字符串判断函数代码分享
2014/12/08 Javascript
jQuery.position()方法获取不到值的安全替换方法
2015/03/13 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
js实现楼层效果的简单实例
2016/07/15 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
详解利用 Express 托管静态文件的方法
2017/09/18 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
js隐式转换的知识实例讲解
2018/09/28 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
js实现网页版贪吃蛇游戏
2020/02/22 Javascript
Python struct.unpack
2008/09/06 Python
python框架django基础指南
2016/09/08 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
python实现八大排序算法(1)
2017/09/14 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
python实现滑雪游戏
2020/02/22 Python
python实现梯度法 python最速下降法
2020/03/24 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
2020/10/12 Python
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
Foreo国际站:Foreo International
2018/10/29 全球购物
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
数据库连接池的工作原理
2012/09/26 面试题
出国英文推荐信
2014/05/10 职场文书
外联部演讲稿
2014/05/24 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
2014年小学美术工作总结
2014/12/20 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技