我们接下来就来聊聊yii2框架是如何整合百度编辑器umeditor的。
umeditor是啥,我只听过ueditor,你这umeditor是不是盗版的东东喃?umeditor呢,说白了就是mini版的ueditor,按照百度官方说法,其实就是编辑器中的"短软小",但是功能俱全。咳咳,咱们回归正题。
首先勒,咱们先去官网下载一份mini版的ueditor umeditor,注意哦,是um editor。
下载下来解压放到项目根目录下面的 /css目录下 命名为umeditor,具体位置各位随意,后面能引用的到就行。
第二步,我们先去扩展下backendassetsappset类,哎呀我擦,为啥要扩展这么个玩意,跟咱们的umeditor整合啥关系勒,半路杀出个程咬金出来。这里扩展下这个类文件的意图是为了接下来在文件中方便引入css js文件滴。
很简单,在appset方法中增加下面两个方法即可
//定义按需加载js方法,注意加载顺序在最后
public static function addscript($view, $jsfile) {
$view->registerjsfile($jsfile, [appasset::classname(), 'depends' => 'backendassetsappasset']);
}
//定义按需加载css方法,注意加载顺序在最后
public static function addcss($view, $cssfile) {
$view->registercssfile($cssfile, [appasset::classname(), 'depends' => 'backendassetsappasset']);
}
接下来,按照下面的配置即可。
先做说明,此处我们假设有一个文章article表,有一个内容content字段需要显示为百度编辑器。
按照yii2的表单模型来看,我们修改article_form.php文件中的content字段
<?= $form->field($model, 'content')->textarea(['style' => 'width:760px;height:500px;']) ?>
该文件引入appset类并引入相关的css js文件如下
use backendassetsappasset; 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'], yiiwebview::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 backendmodelsupload;
use yiiwebuploadedfile;
/**
* 百度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,区分大小写
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!