Laravel框架集成UEditor编辑器的方法图文与实例详解


Posted in PHP onApril 17, 2019

本文实例讲述了Laravel框架集成UEditor编辑器的方法。分享给大家供大家参考,具体如下:

一、 背景

  • 在项目开发的过程中,免不了使用修改功能,而富文本编辑器是极为方便的一种推荐,当然,个人认为 MarkDown 更为简单,但是感觉暂时只适合程序猿
  • 此文介绍如何在 Laravel5.5 框架中集成使用富文本编辑器 UEditor

ps : 其实编辑器只是一个工具,举一反三可以用在各种代码语言或框架中

二、 探讨

  • 通过网上求知,发现主要有两种方法实现

①. 第一种是使用 composer 进行安装,可推荐参考文章 Laravel-u-editor,个人试过,无法上传图片 …

②. 第二种是到 UEditor 官方下载源包自行配置(下文主要为此操作)

  • ps : [如果有哪位能够成功实现第一种方案,请告诉鄙人一下,万分感谢!]

三、操作步骤

❶. 下载对应的源码包

  • 可点击进入下载地址,本人下载的是最新 PHP(UTF-8) 版本

Laravel框架集成UEditor编辑器的方法图文与实例详解

❷. 放置在 Public 目录下

  • 将解压后的文件夹,放置在 Public 目录下,本人只是将文件夹名字改动了一下.

Laravel框架集成UEditor编辑器的方法图文与实例详解

❸. 前端文件配置

  • 详情可参考 官方文档
    以本人为例:

①. 首先在当前页面,需要引入 js 文件,注意类比src的正确引用.

<!-- ueditor-mz 配置文件 -->
<script type="text/javascript" src="{{asset('ueditor-mz/ueditor.config.js')}}"></script>
<!-- 编辑器源码文件 -->
<script type="text/javascript" src="{{asset('ueditor-mz/ueditor.all.js')}}"></script>
<!-- 实例化编辑器 -->
<script type="text/javascript">
 var ue = UE.getEditor('ue-container');
 ue.ready(function(){
  ue.execCommand('serverparam', '_token', '{{ csrf_token() }}');
 });
</script>

②. 在需要显示富文本编辑器的位置,补充如下代码

<!-- 加载编辑器的容器 -->
<script id="ue-container" name="content" type="text/plain">
@php
echo htmlspecialchars_decode($article['content']);
@endphp
</script>
<!-- 上述的 php 代码是根据实际需求进行的编写,该处为初始化内容的位置-->

③. 实现效果如下:

Laravel框架集成UEditor编辑器的方法图文与实例详解

❹. 补充

①. 在进行 form 表单提交时,将获得 name="content" 所传输的数据写入数据库即可,而对应在数据库中存储的数据如下所示:

<p><strong style="white-space: normal; padding: 0px; margin: 0px;">        <span style="color: rgb(51, 51, 51);"></span></strong><span style="color: rgb(51, 51, 51);">开场后,第<strong>32秒</strong>,佩顿在朗多投篮时犯规,送给鹈鹕2次罚球机会。第1分35秒,考辛斯妙传,朱-霍勒迪三分远投命中。</span></p><p><span style="color: rgb(51, 51, 51);">        第7分28秒,佩顿手滑丢球,被考辛斯抢断。鹈鹕对篮板发起疯狂进攻,本节共抢下16个篮板,包括6个前场篮板,其中戴维斯一人就贡献4个篮板球。</span></p><p style="text-align: center;"><img src="http://lar5Pro.com/upload/image/20171227/NjUzNDczMDc3ODU2.jpg" title="NjUzNDczMDc3ODU2.jpg" alt="article_3.jpg" width="906" height="450"/><br/></p>

②. 当取得了上述数据,若要在前端进行显示,需要执行类似的转化代码:

echo htmlspecialchars_decode($article['content']);
③. 在富文本编辑器中,图片的大小可自行调整.

四、扩展学习

♩. 图片上传路径

  • 其实,如果只是个简单的小网站或者学生的课设项目,无需修改,上传的图片会默认放置在 Public/ueditor/php/upload/image/ 目录下

  • 如果需要修改,可进入php/config.json 文件,找到配置项 "imagePathFormat" 进行符合需求的修改,建议可以让文件名较长一些以避免重名:

Laravel框架集成UEditor编辑器的方法图文与实例详解

[注]:
个人初始测试发现,文件命名时的“{rand:6}”定义无法实现,网上却没有类似的解决方法,解决方案请参考后面的 ***【附录】***.

♪. 图片访问前缀

  • 如果使用了多个服务器,设置统一的图片访问前缀极有必要,可配置参数“imageUrlPrefix”,例如我的配置路径可以为:“http://lar5Pro.com”

  • 这样一来,存入数据库中的图片路径都会加上了此前缀.

五、附录

♭. 图片文件名 {rand:$num} 解决

  1. 刚开始想到使用时间戳加文件原名称来作为名字,但是当有中文字符时无法上传。
  2. 其实原本的ThinkPHP框架中也集成过UEditor,但是没有这种问题,通过阅读源码,找到正则表达式的匹配位置 Public/ueditor-mz/php/Uploader.class.php
  • 大概在 304 行左右,原因是rand() 取值太大可能导致部分环境报错

  • 个人觉得数字的命名不如字母好些,于是代码替换为如下的样子:

//TODO 替换随机字符串 数值太大可能导致部分环境报错
$randNum = rand(100000, 10000000) . rand(100000, 10000000);
//也可用使用md5()或两者的组合
$randNum = base64_encode($randNum);

Laravel框架集成UEditor编辑器的方法图文与实例详解

♫. 呵呵

  • 真是尴尬了,方案一测试多遍依然不成功,所以钟情于第二种方案 …
  • HELP !HELP!HELP!

【补充问题】(2018-02-06):

emm楼主第一种上传不了图片的问题我当时也遇到过,最后发现是接口路径没配置好。在laravl-u-editor 目录下 ueditor.config.js文件 中修改33行左右的 serverUrl,改成对应的路径即可。

这个问题,可以参考 相应文章的提示,下次有机会可以尝试一番…

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
php获取mysql版本的几种方法小结
Mar 25 PHP
php file_get_contents函数轻松采集html数据
Apr 22 PHP
php 阴历-农历-转换类代码
Jan 16 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
使用PHP备份MYSQL数据的多种方法
Jan 15 PHP
php查询mysql大量数据造成内存不足的解决方法
Mar 04 PHP
php简单判断两个字符串是否相等的方法
Jul 13 PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
php读取本地json文件的实例
Mar 07 PHP
php校验公钥是否可用的实例方法
Sep 17 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 #PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 #PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
Apr 16 #PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 #PHP
Laravel框架自定义公共函数的引入操作示例
Apr 16 #PHP
Laravel框架文件上传功能实现方法示例
Apr 16 #PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
Apr 16 #PHP
You might like
解决PHP在DOS命令行下却无法链接MySQL的技术笔记
2010/12/29 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
php实现水印文字和缩略图的方法示例
2016/12/29 PHP
Javascript YUI 读码日记之 YAHOO.util.Dom - Part.3
2008/03/22 Javascript
JavaScript Eval 函数使用
2010/03/23 Javascript
FileUpload 控件 禁止手动输入或粘贴的实现代码
2010/04/07 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
利用JavaScript阻止表单提交的两种方法
2016/08/11 Javascript
javascript的document中的动态添加标签实现方法
2016/10/24 Javascript
JS中使用media实现响应式布局
2017/08/04 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
Vue源码之关于vm.$delete()/Vue.use()内部原理详解
2019/05/01 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
JS原型和原型链原理与用法实例详解
2020/02/05 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
python dict remove数组删除(del,pop)
2013/03/24 Python
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
浅谈django的render函数的参数问题
2018/10/16 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
2019/06/19 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
德国最大的网上鞋店之一:Schuhe24.de
2017/06/10 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
办公室主任竞聘演讲稿
2014/05/15 职场文书
音乐幼师求职信
2014/07/09 职场文书
征用土地赔偿协议书
2014/09/26 职场文书
优秀班集体申报材料
2014/12/25 职场文书
python_tkinter弹出对话框创建
2022/03/20 Python
nginx静态资源的服务器配置方法
2022/07/07 Servers