yii2实现Ueditor百度编辑器的示例代码


Posted in PHP onNovember 02, 2018

今天在网上看了下有关图片上传的教程,历经挫折才调试好,现在把相关代码及其说明贴出来,以供初次使用的朋友们参考。

资源下载

yii2.0-ueditor下载路径:yii2-ueditor-3water.rar

效果演示:

yii2实现Ueditor百度编辑器的示例代码

安装方法:

1.下载yii2-ueditor
2.将下载的yii2-ueditor-master 修改 ueditor (注意:修改成其他文件名请修改插件内对应的命名空间)
3.将文件方在 根目录/common/widgets 下即可

调用方法:

在backend/controllers中新建一个控制器Demo加入以下代码

public function actions(){
 return [
 'ueditor'=>[
  'class' => 'common\widgets\ueditor\UeditorAction',
  'config'=>[
  //上传图片配置
  'imageUrlPrefix' => "", /* 图片访问路径前缀 */
  'imagePathFormat' => "/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */
  ]
 ]
 ];
}

第一种调用方式:

在对应的渲染页面,即views下的页面中

<?=common\widgets\ueditor\Ueditor::widget(['options'=>['initialFrameWidth' => 850,]])?>

options 填写配置编辑器的参数(参考ueditor官网)

第二种调用方式:

<?php $form = ActiveForm::begin(); ?>

<?= $form->field($model, 'title')->textInput(['maxlength' => true]) ?>

<?= $form->field($model, 'content')->widget('common\widgets\ueditor\Ueditor',[
 'options'=>[
 'initialFrameWidth' => 850,
 ]
]) ?>

 ...

<?php ActiveForm::end(); ?>

yii2框架整合了百度编辑器,因为文件上传采用的是yii2自带的UploadedFile,这就难免umeditor上传不成功问题,解决问题的只需要两个操作步骤,我们来看看具体实现

创建一个 common/models/Upload.php:代码为:

<?PHP
namespace common\models;

use yii\base\Model;
use yii\web\UploadedFile;

/**
 * UploadForm is the model behind the upload form.
 */
class Upload extends Model
{
 /**
 * @var UploadedFile file attribute
 */
 public $file;

 /**
 * @return array the validation rules.
 */
 public function rules()
 {
 return [
  [['file'], 'file'],
 ];
 }
}

需要在刚刚创建的那个控制器Demo里添加actionUploadImage方法处理“富文本框的图片上传”内容

use yii\web\UploadedFile;
use common\models\Upload;
/**
 * 富文本框的图片上传
 * @return array
 */
 public function actionUploadImage()
 {
 $model = new Upload();
 if (Yii::$app->request->isPost) {
  $model->file = UploadedFile::getInstance($model, "file");
  $dir = '/uploads/ueditor/';//文件保存目录
  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
use yii\widgets\ActiveForm;
?>

 <?= $form->field($model, 'content')->widget('common\widgets\ueditor\Ueditor',[
 'options'=>[
  'initialFrameWidth' => 1050,//宽度
  'initialFrameHeight' => 550,//高度
 ]
 ]) ?>
<div class="form-group">
 <?= Html::submitButton('保存', ['class' => 'btn btn-success']) ?>
 </div>

<?php ActiveForm::end() ?>

其中content是字段名称

关于图片上传的可以看下:https://3water.com/article/150018.htm

在YII2框架中使用UEditor编辑器发布文章的地址:https://3water.com/article/150022.htm

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
最令PHP初学者头痛的十四个问题
Jul 12 PHP
PHP下常用正则表达式整理
Oct 26 PHP
深入php之规范编程命名小结
May 15 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
Jul 01 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
php实现的zip文件内容比较类
Sep 24 PHP
php视频拍照上传头像功能实现代码分享
Oct 08 PHP
PHP实现对xml的增删改查操作案例分析
May 19 PHP
Yii2实现ActiveForm ajax提交
May 26 PHP
php-7.3.6 编译安装过程
Feb 11 PHP
详解php反序列化
Jun 10 PHP
通过实例解析PHP数据类型转换方法
Jul 11 PHP
php 调用百度sms来发送短信的实现示例
Nov 02 #PHP
Linux下 php7安装redis的方法
Nov 01 #PHP
PHP结合Ffmpeg快速搭建流媒体服务的实践记录
Oct 31 #PHP
php图片裁剪函数
Oct 31 #PHP
php+js实现裁剪任意形状图片
Oct 31 #PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 #PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 #PHP
You might like
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
CodeIgniter中使用cookie的三种方式详解
2014/07/18 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
jquery中dom操作和事件的实例学习 下拉框应用
2011/12/01 Javascript
js取模(求余数)隔行变色
2014/05/15 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
2014年最火的Node.JS后端框架推荐
2014/10/27 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
vue.js内置组件之keep-alive组件使用
2018/07/10 Javascript
简单了解常用的JavaScript 库
2020/07/16 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
python 多进程通信模块的简单实现
2014/02/20 Python
Python中使用PDB库调试程序
2015/04/05 Python
python学习基础之循环import及import过程
2018/04/22 Python
用python爬取租房网站信息的代码
2018/12/14 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
对Python _取log的几种方式小结
2019/07/25 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
Solaris操作系统的线程机制
2012/12/23 面试题
创建青年文明号材料
2014/05/09 职场文书
群众路线批评与自我批评发言稿
2014/10/16 职场文书
银行招聘自荐信
2015/03/06 职场文书
党小组意见范文
2015/06/08 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android