本文實例講述了Laravel框架集成UEditor編輯器的方法。分享給大家供大家參考,具體如下:
MarkDown
更為簡單,但是感覺暫時只適合程序猿ps : 其實編輯器只是一個工具,舉一反三可以用在各種代碼語言或框架中
①. 第一種是使用
composer
進行安裝,可推薦參考文章 Laravel-u-editor,個人試過,無法上傳圖片 …②. 第二種是到
UEditor
官方下載源包自行配置(下文主要為此操作)
Public
目錄下Public
目錄下,本人只是將文件夾名字改動了一下.
①. 首先在當前頁面,需要引入 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">@phpecho htmlspecialchars_decode($article['content']);@endphp</script><!-- 上述的 php 代碼是根據實際需求進行的編寫,該處為初始化內容的位置-->
③. 實現效果如下:
①. 在進行 form
表單提交時,將獲得 name="content"
所傳輸的數據寫入數據庫即可,而對應在數據庫中存儲的數據如下所示:
其實,如果只是個簡單的小網站或者學生的課設項目,無需修改,上傳的圖片會默認放置在 Public/ueditor/php/upload/image/
目錄下
如果需要修改,可進入php/config.json
文件,找到配置項 "imagePathFormat"
進行符合需求的修改,建議可以讓文件名較長一些以避免重名:
[注]:
個人初始測試發現,文件命名時的“{rand:6}”定義無法實現,網上卻沒有類似的解決方法,解決方案請參考后面的 ***【附錄】***.
如果使用了多個服務器,設置統一的圖片訪問前綴極有必要,可配置參數“imageUrlPrefix”,例如我的配置路徑可以為:“http://lar5Pro.com”
這樣一來,存入數據庫中的圖片路徑都會加上了此前綴.
{rand:$num}
解決
- 剛開始想到使用時間戳加文件原名稱來作為名字,但是當有中文字符時無法上傳。
- 其實原本的ThinkPHP框架中也集成過UEditor,但是沒有這種問題,通過閱讀源碼,找到正則表達式的匹配位置
Public/ueditor-mz/php/Uploader.class.php
大概在 304 行左右,原因是rand()
取值太大可能導致部分環境報錯
個人覺得數字的命名不如字母好些,于是代碼替換為如下的樣子:
//TODO 替換隨機字符串 數值太大可能導致部分環境報錯$randNum = rand(100000, 10000000) . rand(100000, 10000000);//也可用使用md5()或兩者的組合$randNum = base64_encode($randNum);
【補充問題】(2018-02-06):
emm樓主第一種上傳不了圖片的問題我當時也遇到過,最后發現是接口路徑沒配置好。在laravl-u-editor 目錄下 ueditor.config.js文件 中修改33行左右的 serverUrl,改成對應的路徑即可。
這個問題,可以參考 相應文章的提示,下次有機會可以嘗試一番…
希望本文所述對大家基于Laravel框架的PHP程序設計有所幫助。
新聞熱點
疑難解答
圖片精選