Thinkphp整合最新Ueditor编辑器

说到最新的富文本编辑器的确不少(ckeditor、fkeditor、ueditor),这些富文本编辑器如果单独使用基本上很方便,不需要做额外的配置,只要把官方的插件下载下来放到一个web容器中,看看 插件中提供的 index.html 里的代码就明白应该怎么调用了。因为富文本编辑器会经常涉及到文件、图片、视频资源的上传,如果本身所用到的框架或者是项目本身就有一个模块是专门来处理这一块儿的,对一些资源需要做特殊处理的,例如水印处理,对图片的大小处理(原图、缩略图),那么就设计到把富文本编辑器与你现有的上传模块结合起起来(富文本编辑器都有自己的上传模块)。这里值得一提的是ueditor 这个富文本编辑器,各个版本之间的差异比较大(1.2+ 、1.3+、1.4+),导致与现有的上传模块结合也存在差异。

这里笔者就采用最新版的ThinkPHP 与 最新的百度Ueditor 做整合。

首先访问百度Ueditor的官方地址:下载列表

aaarticlea/png;base64,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" alt="" width="509" height="156" />

根据自己的需求下载不同的版本,这里采用的是1.4.4PHP utf8版本的。

Thinkphp 这里就不用说了,直接去tp官网下载最新的。

步骤:

前端部分:

把下载下来的富文本编辑器重新命名例如 ueditor ,把把放到项目的根目录(笔者建议你在根目录新建一个文件件或者是把它放到项目的Public目录下),这个根据个人对网站目录

的要求而决定,笔者是放在 Public 目录下的

aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAACrCAIAAACsWkQ9AAAJx0lEQVR4nO2dMXLCOhCGuQM3oKSifJPhAkxqrpAZDpI+V+ASNDlKjvKKvMIES/LuSitLNnn5vqEIkS2E9aOV5d/rzQYAAAAAAH4zr++fP7y/Fhf1aIX2GdlmvL5/fn5eL/uqT95frtX7Qh6jZ61Ol7cOKduz4DP0TeYIy/flwE1TYY1bl/b5LGHN4PWd4aovnYQ1vM/33TrCIgz2p6uw7u+TovDt8Pf+ctUjqNSMzPQrqE9S9/5yJQz2pmcojNUjbnlXyP3t/nKVReRpYfTRxXtBY3pN3pXBK31rjHN1LcxHOXS1CN1CoV6UE1aiC18Lc41merUQTyisWSNW5pwBXS3FEsIKp07xpEqYmU263dnC/eWqS4sw2J10PTPpbKUoU6G6WXQWF56URedv08GrroVxpYHI0BV0gDAIPUBXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwHHD3c2fuaTI8CTHsXVwVGpk/qptXBElA+rK/XD+vVyELo8aQTuii5lx0Vzipe5+81z9rBqRG7ssQDsp/va/vw4ZaMs+9t8JJ9eN+uc+aAWGwN0OP+XUgd/Yji5pY4RDUjM9Ruru9sEiN3J3h8DYS1liNS1jBNEscRZoLi+nVUjQRlpU+tBA5lWNrYaGrxWggrGnC0Kq+k6JhW2ExvVqEJFtn8RFPO1vI/OmrMKhHfNREK2GhqyVpNXm3K8xO3pV82TXC2h2/z+fv0+GlpGHQi/LDnaxnaoNSubDioS4qLPwskUFY5+NbQbsA5kEYhB6gKwAAAAAAAABYDRYmWtDQmhwso5f2i25Nli4/LtPbrM83oJ01efIMS78KrGfrik+x7wKu5Qa0tib/UCkDvSGZ5zm3gzDYhLbW5BFJWLXWZKW6PuBabkNTa/KIGAprrckLDldMr9rSWFiv75XzbHlqttxwha4a01JYw8lcbe8I0XC5SQ/Tq3bUns4rwsqbRAvqnd6jga5+KW1GrJyqaqzJtWFQsyYbRYTB9rSwJgslotW43JpcvRy2Ua3JRhG6gg4QBqEH6AoAAAAAAAAAVoOFiTJqchLrBuRoGb3s8E8W7MfdsgmVV4D1+ULcOYnDy3nxFZf4Ql/pRb7SEWC5a9GZVqzfiF+CK/tUKoNAPqmSChVTHFqeYKwgDHrwCCs5svdY9fOf0IlV7H5orb+Bl8Pp+3y+v0Ijw/bw9fj/+XzbBfsYRWMbCIPFeIQVxKO7S/Q1GacesywlB7yiNtPe4LSKbd6Oiq9hs7uJiskU3XmCIfNX4RfWayCQMAAGU65KG6nhaS520GwPX+fTx1Ys293O5++jKB+jaGwbunLgDYVx148hKp1j1aWkNbqvMBrujspwNbD9OEkhMlPE9MqPSwDpuVlwvCenbTU/cetcsrC+3fFbHbFCth8nxWIqFKErP76RJYpIkQySGZQQuoruK5x/B5ihmIiXw0nbLC0iDLpR1iYtwun29CZ7Y0Ezb02OG2C6lk2CoBbGtfi8zzhbTASHrqADhEHoAboCAAAAAAAAgIHdTUsKMg9WH8qosSYre9U7ie1ky0Gpo85OwmIRvhC3NVnPmixsVfLD1r3ODdJttQZrcjm+i9ClWZNLf9qG1/n5upEw6KHeN5XJsSbnEp2mzFK9zpW62t0e15Ij497243S+HYaLzaeP7X2z0TWaXIee+v6wJrtoKSzbSSwIy/I6D/0YWhxcrXw7CsL6Pp8+to8/gm22h69RZLKblOmVjy4jVqmT2PI6p/Zm5w1gorC+Dtu7wo67aJvYdypZtdCVkz7CKpyQWF7nSU/6pjg+YeVGLKZXbnoJq+wXbnidJ33pG7IqhKXOrtBVBX2EJYlAv/1L9DonlXjzJ7uE9XI4WbfoEAbdeK3JetbkvJO44JEn1l2HhSPGPSly+BomT+aIFZ5LRnv9fDN0BRXIp5DDfwiDUEsgo/s/Dl/nYXhDVzCLNBTat9sDAAAAAADA8/N2PJdlnklhiWE2zmXtO5qhuSJrcrxXuE+8kl/TzFphsdLeCs8DJ1Vrcn3W5CgTktaM5R45/mzG1d9Mca/p1uTKrMmlzVgsHTdhsCXu4UByN1RlTS5rhqN96UXoOBSSGnlR/M9e1mwz7qzJRc2oHa7StJGkRl4UI1exvY9urarJmqw2o352JQmL1MjLMCdxtjnHct9Wpm0+Y9IjJLolNfIy1N4QOpXNjKzJZoycM2u3MiiTGrkrtQO/MmJVZE22Z17zFhnM1NykRu5JvP6YP66GNbkqa7JQn61OF4mwSI0Mbcg8pSKAMAg2b8eHkiaGYx10BVm03A0AAAAAAADwF1jtrJA1i4CarMl6kuMKa/Jk6V1byPcui0/SMfSGpfsQd9ZkPclxvTW5RILua9FLCwtDc4LL3mIkOa60JhfHD++AsKywCIMTvE+xV5Mc11mTW+vvgSKsMPlHfBnRcC1jaK7AIywryXFQm8eabE+k7DTMJoKwokSjm5fDKdCW4VrG0FyFX1hykuPZ1uTNQ62SgtwOmqmwJrmQQ8UYrmUMzVV4Q2Hc9WOImmdNDvdSdnJGw6mw3o5JMsgkrhmuZQzNflwCMJIcz7Amj1jnks76ZGEVTeenrmWjCF0p+EYWPclxrTVZq1xo5tzlhniOZSA9QEApIgzKKGuTFnqS4wprsrWmmk3DLKJmTd5sNtMH5vwUGa5lDM2wNIRB6AG6AgAAB//+8w+vJV9rd/hSrH6g/9pr7Q5fitUP9F97rd3hS/HnvvBK/Lnj/Lu+sHBv/u4mXSjsSs1yxhMd5wp3sr2LWKp94az/2Ne86W31j8cUenAIK2+qqaVqVf9phLW/XD+vV0euIDVrsl1h0RdOLwjmPmtKP2Gpm/YSVp3X+VmENQy25b8NPWvywF6rsOwLR/vlPkvifyOs2lX9ZxHW0GP+QVfu7IfdwRBWxt0gHMymwtKtyekjCyNzqXA/WXo92756naRCPX1sA3/Y1MxT7XV+FmGNDvUGwhqrcQkr5z9uJizDmpw4aqQRyzDRCyPW7vidftZDW3eliq0av3KdaeJZhDXQRFhhJZWhUDZktRKWYU1ORTNXWPbAubudw0F0GqxnmHH+d8KKq6idY4nRsJWwdGvyZK8WwkomdsHumWnZLNPEswjrM8b3YCXp7hytwsIvLEnc5XGddL8+LBl79R+xdGHNM+M8i7AGWk3ejQpLJu+K/9hnno4T2loTKWWvl8NJmtprwlISUgpzrJJbzWZ7Un+rsMysyVaFmrAM/3HhZ02J3MnWXalh6RgoT4eX7eHrUWR7nZM6wzmc2gxLWHO9zs8lrAVY/aLsX3ut3eFLsfqB/muvtTt8KVY/0H/ttW53/wfEM9hMGwq6gQAAAABJRU5ErkJggg==" alt="" />

其次就是到你需要加载富文本编辑器的地方,做一些初始化(1.引用富文本编辑器所需要的js文件 2.初始化插件),代码如下:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>Demo</title>
<!-- JQuery 这里自己引用 -->
<js file="__ROOT__/Public/Ueditor/ueditor.config.js"/>
<js file="__ROOT__/Public/Ueditor/ueditor.all.min.js"/>
<!--建议手动加在语言,避免在ie下有时因为加载语言失败导致编辑器加载失败-->
<!--这里加载的语言文件会覆盖你在配置项目里添加的语言类型,比如你在配置项目里配置的是英文,这里加载的中文,那最后就是中文-->
<js file="__ROOT__/Public/Ueditor/lang/zh-cn/zh-cn.js"/>
<script type="text/javascript" charset="utf-8">
window.UEDITOR_HOME_URL = "__ROOT__/Public/Ueditor/";
$(document).ready(function () {
UE.getEditor('test_ue', {
initialFrameHeight: 500,
initialFrameWidth: 1100,
serverUrl: "{:U(MODULE_NAME.'/Index/testUe')}"
});
}); </script>
</head>
<body>
<textarea name="test_ue" id="test_ue" style="width:1024px;height:500px;"></textarea>
</body>
</html>

这里UE.getEditor 中的 test_ue 就是 textarea的id名称,其中 serverUrl 就是重写了Ueditor上传的地址,默认是调用 ueditor组件的 controller.php 去上传的。

这里前面的初始化部分已经完成了,接下来看看tp后端怎么处理 富文本编辑器的请求的。

后端部分:

这里是一个demo,所以我们就在后端的 IndexController中的testUe函数中处理。这里这得注意的是,我们需要看看Ueditor 本身是怎么处理上传的,代码在Ueidtor/php/controller.php ,这里我们需要把这里面的代码拷贝到 test_Ue函数中做一些小的处理,源文件代码如下:

<?php
//header('Access-Control-Allow-Origin: http://*.baidu.com'); //设置http://*.baidu.com允许跨域访问
date_default_timezone_set("Asia/chongqing");
error_reporting(E_ERROR);
header("Content-Type: text/html; charset=utf-8"); $CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents("config.json")), true);
$action = $_GET['action']; switch ($action) {
case 'config':
$result = json_encode($CONFIG);
break; /* 上传图片 */
case 'uploadimage':
/* 上传涂鸦 */
case 'uploadscrawl':
/* 上传视频 */
case 'uploadvideo':
/* 上传文件 */
case 'uploadfile':
$result = include("action_upload.php");
break; /* 列出图片 */
case 'listimage':
$result = include("action_list.php");
break;
/* 列出文件 */
case 'listfile':
$result = include("action_list.php");
break; /* 抓取远程文件 */
case 'catchimage':
$result = include("action_crawler.php");
break; default:
$result = json_encode(array(
'state'=> '请求地址出错'
));
break;
} /* 输出结果 */
if (isset($_GET["callback"])) {
echo $_GET["callback"] . '(' . $result . ')';
} else {
echo $result;
}

主要处理3个部分就ok了, 1.修改 config.json的引用路径,确保能被正确引用 2.上传的代码采用 thinkphp 提供的上传 3.构造ueditor编辑器的返回值

其中第 3 个部分可以参考与controll.php 并列的一个文件action_upload.php 文件, 里面写的有返回格式要求:

/**
* 得到上传文件所对应的各个参数,数组结构
* array(
* "state" => "", //上传状态,上传成功时必须返回"SUCCESS"
* "url" => "", //返回的地址
* "title" => "", //新文件名
* "original" => "", //原始文件名
* "type" => "" //文件类型
* "size" => "", //文件大小
* )
*/

所以综合上面的步骤,整理后的代码如下:

  public function testUe()
{
$ueditor_config = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents("./Public/Ueditor/php/config.json")), true);
$action = $_GET['action'];
switch ($action) {
case 'config':
$result = json_encode($ueditor_config);
break;
/* 上传图片 */
case 'uploadimage':
/* 上传涂鸦 */
case 'uploadscrawl':
/* 上传视频 */
case 'uploadvideo':
/* 上传文件 */
case 'uploadfile':
$upload = new \Think\Upload();
$upload->maxSize = 3145728;
$upload->exts = array('jpg', 'gif', 'png', 'jpeg');
$info = $upload->upload();
if (!$info) {
$result = json_encode(array(
'state' => $upload->getError(),
));
} else {
$url = __ROOT__ . "/Uploads/" . $info["upfile"]["savepath"] . $info["upfile"]['savename'];
$result = json_encode(array(
'url' => $url,
'title' => htmlspecialchars($_POST['pictitle'], ENT_QUOTES),
'original' => $info["upfile"]['name'],
'state' => 'SUCCESS'
));
}
break;
default:
$result = json_encode(array(
'state' => '请求地址出错'
));
break;
}
/* 输出结果 */
if (isset($_GET["callback"])) {
if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
} else {
echo json_encode(array(
'state' => 'callback参数不合法'
));
}
} else {
echo $result;
}

这里默认采用Thinkphp 默认的长传目录 “Uploads” 这个目录, 默认在项目的根目录下,如果你是在Linux系统上测试,需要确认的是你的apache对网站的根目录有些的权限,

那么它会自动创建,此外需要你手动创建。

另外对于一些站点来说,上传至uploads 目录只是临时的,最终是需要讲这些附件上传至 资源服务器。这种情况下你上传完的图片在富文本编辑器中显示的引用地址应该是从资源服务器引用过来的。这里需要修改的只有2处:

1.在上传至uploads 成功之后,就调用上传至你的资源服务器的代码

2.需要修改的是上面代码中 url 的链接地址,应该修改成你资源服务器的地址,确保可以正确引用你刚才上传的附件。

以上的代码只是一个 demo,仅供参考。

到此完毕!

上一篇:ASP.NET Application_Error错误日志写入


下一篇:HDU 2586 How far away ?(LCA模板 近期公共祖先啊)