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 相关文章推荐
一个域名查询的程序
Oct 09 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
Jun 17 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 PHP
怎样使用php与jquery设置和读取cookies
Aug 08 PHP
php引用传值实例详解学习
Nov 06 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
May 10 PHP
浅析PHP编程中10个最常见的错误
Aug 08 PHP
Laravel 4.2 中队列服务(queue)使用感受
Oct 30 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
Yii框架中jquery表单验证插件用法示例
Oct 18 PHP
php实现base64图片上传方式实例代码
Feb 22 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技术开发技巧分享
2010/03/23 PHP
Laravel下生成验证码的类
2017/11/15 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
实现js保留小数点后N位的代码
2014/11/13 Javascript
JavaScript获取表单内所有元素值的方法
2015/04/02 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
python使用any判断一个对象是否为空的方法
2014/11/19 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
Python 3.8正式发布重要新功能一览
2019/10/17 Python
python配置文件写入过程详解
2019/10/19 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
HTML5制作3D爱心动画教程 献给女友浪漫的礼物
2014/11/05 HTML / CSS
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
小学英语教学反思
2014/01/30 职场文书
人力资源管理专业自荐书范文
2014/02/10 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
保密工作承诺书
2014/08/29 职场文书
matplotlib之pyplot模块实现添加子图subplot的使用
2021/04/25 Python
Java实现多文件上传功能
2021/06/30 Java/Android
Python实现批量自动整理文件
2022/03/16 Python
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers