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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
MYSQL数据库初学者使用指南
Nov 16 PHP
php中设置多级目录session的问题
Aug 08 PHP
php笔记之:AOP的应用
Apr 24 PHP
深入php var_dump()函数的详解
Jun 05 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
新浪微博OAuth认证和储存的主要过程详解
Mar 27 PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 PHP
PHP简单验证码功能机制实例详解
Mar 27 PHP
PHP进阶学习之垃圾回收机制详解
Jun 18 PHP
php DES加密算法实例分析
Sep 18 PHP
Laravel 验证码认证学习记录小结
Dec 20 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
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
javascript 面向对象,实现namespace,class,继承,重载
2009/10/29 Javascript
php上传图片并给图片打上透明水印的代码
2010/06/07 Javascript
在vs2010中调试javascript代码方法
2011/02/11 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
获取服务器传来的数据 用JS去空格的正则表达式
2012/03/26 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
JavaScript在for循环中绑定事件解决事件参数不同的情况
2014/01/20 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
javascript实现的上下无缝滚动效果
2016/09/19 Javascript
微信小程序 简单DEMO布局,逻辑,样式的练习
2016/11/30 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
koa socket即时通讯的示例代码
2018/09/07 Javascript
详解VUE里子组件如何获取父组件动态变化的值
2018/12/26 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
webpack+vue-cil 中proxyTable配置接口地址代理操作
2020/07/18 Javascript
Python搭建FTP服务器的方法示例
2018/01/19 Python
python在非root权限下的安装方法
2018/01/23 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
小学教师管理制度
2014/01/18 职场文书
公司开业庆典主持词
2014/03/21 职场文书
学生自我评语大全
2014/04/18 职场文书
优秀教师演讲稿
2014/05/06 职场文书
企业整改报告范文
2014/11/08 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
你知道Java Spring的两种事务吗
2022/03/16 Java/Android
Python数据可视化之Seaborn的安装及使用
2022/04/19 Python