ThinkPHP使用Ueditor的方法详解


Posted in PHP onMay 20, 2016

本文实例讲述了ThinkPHP使用Ueditor的方法。分享给大家供大家参考,具体如下:

相信很多人现在还在用着FCkeditor,以前我也在用,可是后来发现百度的Ueditor之后,发现,Ueditor比Fckeditor更好看,操作性上也比Fckeditor好多了,所以还是尝试着使用ueditor,但是在ThinkPHP框架下使用ueditor还是遇到了一些问题,也花费了一些时间去解决这些问题,这样,在这里写一个关于ThinkPHP下使用ueditor的教程,给需要使用的人。

1、在网站的根目录下建一个“Public”的文件夹,这个文件夹在ThinkPHP中可以用__PUBLIC__来替换,所以这样方便我们程序的编写,然后将ueditor文件放到这个文件夹中。

2、在我们需要使用ueditor的模板文件中导入ueditor所要使用的js和css,例如,我在App/Tpl/default/Venter/createvent.html中添加以下代码:

<script type="text/javascript" src="__PUBLIC__/ueditor/editor_config.js"></script>
<script type="text/javascript" src="__PUBLIC__/ueditor/editor_all.js"></script>
<link rel="stylesheet" href="__PUBLIC__/ueditor/themes/default/ueditor.css"/>

3、配置Ueditor相对于网站根目录的位置,这里我建议使用绝对路径,即类似于http://localhost:1080这样的路径,因为在网站项目的开发中,很多地方会用到ueditor,但是由于所用到的位置不同便导致当前目录和服务器根目录的相对路径变化,也就使得ueditor无法使用,例如,我配置的路径(配置文件:ueditor目录下的editor_config.js),将一下代码进行替换:

URL= tmp.substr(0,tmp.lastIndexOf("\/")+1).replace("_examples/","");
//这里你可以配置成ueditor目录在您网站的相对路径或者绝对路径(指以http开头的绝对路径)

替换成:

URL = "http://localhost:1080/Public/ueditor/";

4、下面便是一个对表单的使用的应用:

<form action="__ROOT__/index.php/Venter/ventChk" method="post">
  <script type="text/plain" id="Vent" style="width:500px;"></script>
  <input type="checkbox" name="opened" value="1"/>公开发表
  <input type="submit" value="发泄" />
</form>
<!--注册百度ueditor-->
<script type="text/javascript">
  var editor = new baidu.editor.ui.Editor({
    toolbars:[['Spechars','Emotion','InsertImage','Bold','Italic','ForeColor','FontFamily','FontSize', ]],//自定义ueditor工具栏
    initialContent: '<span style="color:#ccc">点击这里发泄吧</span>',
    minFrameHeight: 100,//初始化框架大小
    autoFloatEnabled: false,//工具栏自动浮动-》关闭
    textarea:'myVent'//form表单将通过该参数获得表单提交的数据
  });
  editor.render("Vent");
</script>
<!--百度Ueditor注册完毕-->

如上面代码所示,可以通过$_POST['myVent']来获取Ueditor编辑区的内容。

5、在Thinkphp中如何去使用呢?首先要先将得到的内容提交进行转义,这里我们使用以下代码:

$content = htmlspecialchars(stripslashes(POST['myVent']));

这之后的操作便是将$content插入到数据库中(这里不再多说)。

6、从数据中提取数据并进行转义使得内容可以正常显示:

$vent = new VenterModel;
$list = $vent->select();
$this->assign("list",$list)

这样在相应的html模板中可以这样来显示内容:

<volist name="list" id="vo">
{$vo.content|htmlspecialchars_decode}
</volist>

这里用到了thinkphp模板的一个用法,即可以在模板中使用函数,这里便使用了函数htmlspecialchars_decode来对$vo,content进行转义,上面的代码可以看成是这样:

htmlspecialchars_decode($vo.content),在这里的这个方法的选择上我用了很长时间,当时没有考虑到这个方法,当时只是想着,由于htmlspecialchars_decode函数接受的传值不能是数组,所以从数据库中提取的数据便不能直接传给他,后来想可以通过遍历数组的方法来让数组内每个元素都htmlspecialchars_decode一下,虽然可以将内容转义,但是却不能在模板中显示了,直到最后看了一些官方的手册,才想到了这里,所以做程序,一定要多看看官方的文档,很多问题便能解决。

PHP 相关文章推荐
php的正则处理函数总结分析
Jun 20 PHP
php 应用程序安全防范技术研究
Sep 25 PHP
PHP clearstatcache()函数详解
Mar 02 PHP
ThinkPHP模版中导入CSS和JS文件的方法
Nov 29 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
Oct 13 PHP
必须收藏的php实用代码片段
Feb 02 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 PHP
ThinkPHP使用Ueditor的方法详解
May 20 PHP
php组合排序简单实现方法
Oct 15 PHP
CakePHP框架Model关联对象用法分析
Aug 04 PHP
php微信开发之关键词回复功能
Jun 13 PHP
thinkphp3.x中变量的获取和过滤方法详解
May 20 #PHP
thinkphp3.x中session方法的用法分析
May 20 #PHP
PHP编写登录验证码功能 附调用方法
May 19 #PHP
一段实用的php验证码函数
May 19 #PHP
thinkphp3.x中cookie方法的用法分析
May 19 #PHP
thinkphp3.x中display方法及show方法的用法实例
May 19 #PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
May 19 #PHP
You might like
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
php cli配置文件问题分析
2015/10/15 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
jquery 笔记 事件
2011/11/02 Javascript
图片在浏览器中底部对齐 解决方法之一
2011/11/30 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
JavaScript动态添加列的方法
2015/03/25 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
jQuery.ajax 跨域请求webapi设置headers的解决方案
2016/08/08 Javascript
js 将图片连接转换成base64格式的简单实例
2016/08/10 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
es6新特性之 class 基本用法解析
2018/05/05 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
Vue 组件封装 并使用 NPM 发布的教程
2018/09/30 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
vue实现菜单切换功能
2019/05/08 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
2017/06/21 Python
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
python3爬虫怎样构建请求header
2018/12/23 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
Python通过字典映射函数实现switch
2020/11/06 Python
北美最大的零售退货翻新商:VIP Outlet
2019/11/21 全球购物
类和结构的区别
2012/08/15 面试题
车间班组长的职责
2013/12/13 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
党员个人剖析材料
2014/09/30 职场文书
男生贾里读书笔记
2015/06/30 职场文书
mysql获取指定时间段中所有日期或月份的语句(不设存储过程,不加表)
2021/06/18 MySQL
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技