yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法

5年以前  |  阅读数:383 次  |  编程语言:PHP 

我们接下来就来聊聊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分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例