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获取网络上文件
Oct 09 PHP
PHP 得到根目录的 __FILE__ 常量
Jul 23 PHP
php5.3 废弃函数小结
May 16 PHP
php批量更改数据库表前缀实现方法
Oct 26 PHP
php加密算法之实现可逆加密算法和解密分享
Jan 21 PHP
ThinkPHP验证码使用简明教程
Mar 05 PHP
php打印输出棋盘的实现方法
Dec 23 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
PHP易混淆知识整理笔记
Sep 24 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
ThinkPHP实现登录退出功能
Jun 29 PHP
PHP数据库编程之MySQL优化策略概述
Aug 16 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
分页显示Oracle数据库记录的类之二
2006/10/09 PHP
adodb与adodb_lite之比较
2006/12/31 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
jquery 简单导航实现代码
2009/09/11 Javascript
jQuery实现form表单reset按钮重置清空表单功能
2012/12/18 Javascript
javascript匿名函数应用示例介绍
2014/03/07 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
Angularjs结合Bootstrap制作的一个TODO List
2016/08/18 Javascript
javascript中对象的定义、使用以及对象和原型链操作小结
2016/12/14 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
JS闭包经典实例详解
2018/12/20 Javascript
python实现k均值算法示例(k均值聚类算法)
2014/03/16 Python
Python实现的Kmeans++算法实例
2014/04/26 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
如何利用python查找电脑文件
2018/04/27 Python
pycharm安装和首次使用教程
2018/08/27 Python
python创造虚拟环境方法总结
2019/03/04 Python
python实现的Iou与Giou代码
2020/01/18 Python
Python实现仿射密码的思路详解
2020/04/23 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
pytorch实现查看当前学习率
2020/06/24 Python
Python调用JavaScript代码的方法
2020/10/27 Python
python实现按日期归档文件
2021/01/30 Python
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
青安岗事迹材料
2014/05/14 职场文书
雷人标语集锦
2014/06/19 职场文书
医学生求职信
2014/07/01 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
病房管理制度范本
2015/08/06 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS
用Python爬取某乎手机APP数据
2021/06/15 Python