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 相关文章推荐
火车头discuz6.1 完美采集的php接口文件
Sep 13 PHP
基于php无限分类的深入理解
Jun 02 PHP
php打开文件fopen函数的使用说明
Jul 05 PHP
php判断数组中是否存在指定键(key)的方法
Mar 17 PHP
php提交过来的数据生成为txt文件
Apr 28 PHP
php实现博客,论坛图片防盗链的方法
Oct 15 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
thinkPHP中U方法加密传递参数功能示例
May 29 PHP
PHP实现负载均衡的加权轮询方法分析
Aug 22 PHP
Django中通过定时任务触发页面静态化的处理方式
Aug 29 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 PHP
php+ajax实现文件切割上传功能示例
Mar 03 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
数据库相关问题
2006/10/09 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
yii框架无限极分类的实现方法
2017/04/08 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
jquery中ajax调用json数据的使用说明
2011/03/17 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
JS中字符串trim()使用示例
2015/05/26 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
vue实现文章内容过长点击阅读全文功能的实例
2017/12/28 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
js实现带箭头的进度流程
2020/03/26 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[01:01:23]完美世界DOTA2联赛PWL S2 Forest vs FTD.C 第一场 11.26
2020/11/30 DOTA
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
Django实现发送邮件功能
2019/07/18 Python
python各类经纬度转换的实例代码
2019/08/08 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
python网络编程之五子棋游戏
2020/05/14 Python
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
英国领先的在线药房:Pharmacy First
2017/09/10 全球购物
英国拳击装备购物网站:RDX Sports
2018/01/23 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
毕业证丢失证明
2014/01/15 职场文书
《老山界》教学反思
2014/04/08 职场文书
党建工作整改措施
2014/10/28 职场文书
年度考核表个人总结
2015/03/06 职场文书
物业项目经理岗位职责
2015/04/01 职场文书
神秘岛读书笔记
2015/07/01 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL