Thinkphp 3.2.3配置百度編輯器(UEditor)


Thinkphp 3.2.3配置百度編輯器(UEditor)

1、 把百度編輯器放到項目的Public目錄下 命名為:UEditor

 

2找到thinkphp框架系統自帶類中的Html.class.php,並且添加在switch(strtoupper($type)) {}中添加代碼

 

case 'UEDITOR':

                $parseStr   =  "\n".'<script type="text/javascript" charset="utf-8" 

                src="__ROOT__/Public/UEditor/ueditor.config.js"></script>'."\n".'

                <script type="text/javascript" charset="utf-8" 

                src="__ROOT__/Public/UEditor/ueditor.all.js"></script>'."\n".'

                <script type="text/plain" id="'.$id.'" name="'.$name.'" style="'

                .$style.'">'.$content.'</script>'."\n".'<script type="text/javascript">var ue_'.$id.' = UE.getEditor("'.$id.'");</script>'."\n";

                break;

3.  在項目文件的www/myproject/Application/Admin/Conf目錄下新建ueditconfig.json文件,

4.  ueditor源碼的php文件夾下的config.json中的內容復制到ueditconfig.json文件中

  

5.在百度編輯器目錄的ueditor.config.js文件內修改:好像可以省略

        // 服務器統一請求接口路徑

         , serverUrl: URL + "../../index.php/Home/Index/ueditup"

 

 

6.  就是你需要的用TP自帶上傳類處理上傳了,在Home模塊的Index控制器里加上下面的方法:

 

    public function ueditup(){

         header("Content-Type: text/html; charset=utf-8");

         $editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);

             //dump($editconfig);

         $action = I('get.action');

         //echo $action;

         switch ($action) {

             case 'config':

                 $result =  json_encode($editconfig);

                 break;

 

             /* 上傳圖片 */

             case 'uploadimage':

                 $result = $this->editup('img');

                 break;

             /* 上傳塗鴉 */

             case 'uploadscrawl':

                 $result = $this->editup('img');

                 break;

             case 'uploadvideo':

                 $result = $this->editup('video');

                 break;

             case 'uploadfile':

                 $result = $this->editup('file');

                 //$result = include("action_upload.php");

                 break;

 

             /* 列出圖片 */

             case 'listimage':

                 $result = $this->editlist('listimg');

                 break;

             /* 列出文件 */

             case 'listfile':

                 $result = $this->editlist('listfile');

                 break; 

             /* 抓取遠程文件 */

             case 'catchimage':

                 //$result = include("action_crawler.php");

                 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;

         }        

     }

     public function editup($uptype){

         if($this->islogin==false){

             $_re_data['state'] = '請登陸';

             return json_encode($_re_data);

         }

         $editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);

         switch ($uptype) {

             case 'img':

                 $upload = new \Think\Upload();// 實例化上傳類

                 $upload->rootPath  =     '.';

                 $upload->maxSize   =     $editconfig['imageMaxSize'];

                 $upload->exts      =     explode('.', trim(join('',$editconfig['imageAllowFiles']),'.'));

                 $upload->savePath  =     $editconfig['imagePathFormat'];

                 $upload->saveName  =     time().rand(100000,999999);

                 $info   =   $upload->uploadOne($_FILES[$editconfig['imageFieldName']]);

                 break;

             case 'file':

                 $upload = new \Think\Upload();// 實例化上傳類

                 $upload->rootPath  =     '.';

                 $upload->maxSize   =     $editconfig['fileMaxSize'];

                 $upload->exts      =     explode('.', trim(join('',$editconfig['fileAllowFiles']),'.'));

                 $upload->savePath  =     $editconfig['filePathFormat'];

                 $upload->saveName  =     time().rand(100000,999999);

                 $info   =   $upload->uploadOne($_FILES[$editconfig['fileFieldName']]);

                 break;

             case 'video':

                 $upload = new \Think\Upload();// 實例化上傳類

                 $upload->rootPath  =     '.';

                 $upload->maxSize   =     $editconfig['videoMaxSize'];

                 $upload->exts      =     explode('.', trim(join('',$editconfig['videoAllowFiles']),'.'));

                 $upload->savePath  =     $editconfig['videoPathFormat'];

                 $upload->saveName  =     time().rand(100000,999999);

                 $info   =   $upload->uploadOne($_FILES[$editconfig['videoFieldName']]);

                 break;

             default:

                 return false;

                 break;

         }

         if(!$info) {// 上傳錯誤提示錯誤信息

             $_re_data['state'] = $upload->getError();

             $_re_data['url'] = '';

             $_re_data['title'] = '';

             $_re_data['original'] = '';

             $_re_data['type'] = '';

             $_re_data['size'] = '';

         }else{// 上傳成功 獲取上傳文件信息

             $_re_data['state'] = 'SUCCESS';

             $_re_data['url'] = $info['savepath'].$info['savename'];

             $_re_data['title'] = $info['savename'];

             $_re_data['original'] = $info['name'];

             $_re_data['type'] = '.'.$info['ext'];

             $_re_data['size'] = $info['size'];

         }

         return json_encode($_re_data); 

     } 

     public function editlist($listtype){

         $editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);

         switch ($listtype) {

             case 'listimg':

                 $allowFiles = $editconfig['imageManagerAllowFiles'];

                 $listSize = $editconfig['imageManagerListSize'];

                 $path = $editconfig['imageManagerListPath'];

                 break;             

             case 'listfile':

                 $allowFiles = $editconfig['fileManagerAllowFiles'];

                 $listSize = $editconfig['fileManagerListSize'];

                 $path = $editconfig['fileManagerListPath'];

                 break;

             default:

                 return false;

                 break;

         }

         /* 獲取參數 */

         $size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $listSize;

         $start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0;

         $end = $start + $size;

         /* 獲取文件列表 */

         $path = $_SERVER['DOCUMENT_ROOT'] . (substr($path, 0, 1) == "/" ? "":"/") . $path;

         $files = $this->getfiles($path, $allowFiles);

         if (!count($files)) {

             return json_encode(array(

                 "state" => "no match file",

                 "list" => array(),

                 "start" => $start,

                 "total" => count($files)

             ));

         }

         /* 獲取指定范圍的列表 */

         $len = count($files);

         for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--){

             $list[] = $files[$i];

         }

         //倒序

         //for ($i = $end, $list = array(); $i < $len && $i < $end; $i++){

         //    $list[] = $files[$i];

         //}

         /* 返回數據 */

         $result = json_encode(array(

             "state" => "SUCCESS",

             "list" => $list,

             "start" => $start,

             "total" => count($files)

         ));

         return $result;

     }

     /**

      * 遍歷獲取目錄下的指定類型的文件

      * @param $path

      * @param array $files

      * @return array

      */

     public function getfiles($path, $allowFiles, &$files = array())

     {

         if (!is_dir($path)) return null;

         if(substr($path, strlen($path) - 1) != '/') $path .= '/';

         $handle = opendir($path);

         while (false !== ($file = readdir($handle))) {

             if ($file != '.' && $file != '..') {

                 $path2 = $path . $file;

                 if (is_dir($path2)) {

                     $this->getfiles($path2, $allowFiles, $files);

                 } else {

                     if(in_array('.'.pathinfo($file, PATHINFO_EXTENSION), $allowFiles)){

                         $files[] = array(

                             'url'=> substr($path2, strlen($_SERVER['DOCUMENT_ROOT'])),

                             'mtime'=> filemtime($path2)

                         );

                     }

                 }

             }

         }

         return $files;

     }

7.8在一個頁面進行)

7.  在需要用到編輯器的模板head內加上: (哪里需要它就就調用)

 

<taglib name="html" />

8.  在用到編輯器的地方加上:(哪里需要它就就調用)

  

<html:editor id="info" name="info" type="UEDITOR" >{$info.info}</html:editor>

綜上效果

 

 補充:使用UEDITOR存在數據庫的資料帶有標簽和樣式

      當我們打印值的時候會出現如下情況(需要)

 

<{:htmlspecialchars_decode($xx['xx'])}>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM