ThinkPHP中FCKeditor編輯器的使用方法
更新時(shí)間:2012年07月05日 17:11:45 作者:
前段時(shí)間一直為T(mén)P尋找好用的在線編輯器而苦惱,經(jīng)過(guò)多次嘗試與修改后,終于成功地將編輯器集成到Thinkphp里面
而且可以用直接上傳和ajax兩種方式處理內(nèi)容。為了給一些還沒(méi)能成功地集成fckeditor的同儕們一些啟發(fā)與幫助,
茲將我的經(jīng)驗(yàn)與體會(huì)描述如下:應(yīng)用目的:將FCKeditor編輯器集成到Thinkphp中,使用戶能夠在線像編輯Word一樣處理即將發(fā)表的文字與圖像。
應(yīng)用軟件與環(huán)境:apache服務(wù)器2.0以上版本,PHP版本5.0以上,mysql5.0以上;Thinkphp版本1.5或以上,F(xiàn)ckeditor版本2.x。
應(yīng)用步驟:
1、下載FCKeditor2.x版本,將解壓后的文件夾FCKeditor復(fù)制到ThinkPHP文件夾下的Vendor目錄下,以便符合THinkPHP的第三方類(lèi)庫(kù)引入規(guī)則。
2、修改參數(shù):
首先,用EditPlus等軟件打開(kāi)FCKeditor目錄下的fckeditor_php5.php文件,找到第130行。出現(xiàn)內(nèi)容如下:
public function __construct( $instanceName )
{$this->InstanceName = $instanceName ;
$this->BasePath= ' ' ;
$this->Width = '900′;
$this->Height = '400′;
$this->ToolbarSet = 'Default' ;
$this->Value = ' ';
$this->Config = array() ;
}
public function __construct( $instanceName ){$this->InstanceName = $instanceName ;
$this->BasePath = '/bm/ThinkPHP/Vendor/FCKeditor/' ;$this->Width = '900′;$this->Height = '400′;
$this->ToolbarSet = 'Default' ;$this->Value = ”;
其中,最關(guān)鍵的就是將Basepath設(shè)置好。
里面填寫(xiě)的就是fckeditor_php5.php文件相對(duì)于網(wǎng)站文檔根目錄(document root)的路徑。
其實(shí)這就是用以表征FCKeditor編輯器相對(duì)根目錄的路徑。比如服務(wù)器的文檔根目錄最下級(jí)是htdocs/或www/,
項(xiàng)目名為project,project項(xiàng)目文件夾下有Thinkphp系統(tǒng)文件包與項(xiàng)目文件包myapp。而且服務(wù)器沒(méi)有對(duì)該項(xiàng)目設(shè)置虛擬主機(jī)的話,
此時(shí)的文檔根目錄仍是www/或htdocs/,那么應(yīng)該是$this->BasePath='/project/ThinPHP/Vendor/FCKeditor/';
若是設(shè)置了虛擬主機(jī),即將project變?yōu)樘摂M的文檔根目錄,通過(guò)某一域名能夠直接訪問(wèn)網(wǎng)站項(xiàng)目的話,那么此時(shí),
$this->BasePath='/ThinPHP/Vendor/FCKeditor/';
其他的參數(shù)如寬度與高度可以填或不填,若填下的話就是編輯器的默認(rèn)高與寬。InstanceName是編輯器所在標(biāo)簽的id與name,此時(shí)不用理會(huì)。其他參數(shù)也不用理會(huì)。
其次,在FCKeditor\editor\filemanager\connectors\php\下面找到config.php文件,打開(kāi)它,找到30與34行。需要改寫(xiě)的參數(shù)如下:$Config['Enabled'] = true ;
$Config['UserFilesPath'] = ' ' ;
其中,第一個(gè)參數(shù)應(yīng)該設(shè)為true.默認(rèn)是true.第二個(gè)參數(shù)填寫(xiě)的是上傳文件的路徑,比如要顯示的圖片等。
我們?cè)趐roject目錄下建立一個(gè)uploads文件夾,那么$Config['UserFilesPath'] = ' /project/uploads/';
路徑規(guī)則與上一個(gè)basepath一樣。要是project是虛擬文檔根目錄的話,那么$Config['UserFilesPath'] =' /uploads/';
3、應(yīng)用程序:
比如在myapp項(xiàng)目中Lib目錄下IndexAction.class.php控制器類(lèi)中的index方法中,當(dāng)訪問(wèn)該程序時(shí),輸出的模板網(wǎng)頁(yè)里有form表單,
要求用戶輸入一篇文章,那么就可以用到編輯器.代碼示例如下,只顯示與fckeditor有關(guān)的代碼,其他代碼會(huì)略。
首先是服務(wù)器程序:
public function index()
{……//其他代碼
vendor(“FCKeditor.fckeditor”);//包含F(xiàn)CKeditor類(lèi)庫(kù),TP引入第三方類(lèi)庫(kù)的系統(tǒng)方法,其路徑是相對(duì)于vendor目錄來(lái)說(shuō)的。
$editor= new FCKeditor(); //實(shí)例化FCKeditor對(duì)象
$editor->Width='980′;//設(shè)置編輯器實(shí)際需要的寬度。此項(xiàng)省略的話,會(huì)使用默認(rèn)的寬度。
$editor->Height='400′;//設(shè)置編輯器實(shí)際需要的高度。此項(xiàng)省略的話,會(huì)使用默認(rèn)的高度。
$this->Value=”;//設(shè)置編輯器初始值。也可以是修改數(shù)據(jù)時(shí)的設(shè)定值。可以置空。
$editor->InstanceName='comment';//設(shè)置編輯器所在表單內(nèi)輸入標(biāo)簽的id與name,即<input>標(biāo)簽的id與name。此處假
//設(shè)為comment.此處不可省,也要保持唯一性。表單上傳到服務(wù)器處理程序后,即可通過(guò)$_POST['comment']來(lái)讀取。
$html=$editor->Createhtml();//創(chuàng)建在線編輯器html代碼字符串,并賦值給字符串變量$html.
$this->assign('html',$html);//將$html的值賦給模板變量$html.在模板里通過(guò){$html}可以直接引用。
…….//其他代碼,包括輸出模板。
}
其次是對(duì)應(yīng)的html模板即index 文件。只需要在需要的地方插入編輯器即可,其他代碼與一般的<form>寫(xiě)法一樣。
…….<!–其他html代碼 –>
<div>
<form id=”commentform” name=”commentform” action=”">//action里填寫(xiě)表單處理程序,如'__APP__/Index/check'。
指的是IndexAction類(lèi)下的check()方法來(lái)處理提交的表單數(shù)據(jù)。
<table style=”width:100%;”>
<tr>
<td style=”text-align:left;”>添加新評(píng)論:
</td>
</tr>
……//其他表單填寫(xiě)項(xiàng)
<tr>
<td > {$html}</td>
</tr>
<tr>
<td><input type=”submit” value=”提交評(píng)論” >
</td>
</tr>
</table>
</form>
</div>
到這里, 已經(jīng)可以用了。在表單處理程序里像通常處理表單元素那樣就行。但是,有的時(shí)候項(xiàng)目移植后,上傳的圖片等鏈接路徑會(huì)被錯(cuò)誤編譯,
以致不能正確顯示圖片等東西。通常是雙引號(hào)解析錯(cuò)誤,我還沒(méi)有解決。要想不出錯(cuò)的話,可以采取ajax的方式處理表單數(shù)據(jù)。
不過(guò)在進(jìn)行ajax處理之前,要先用一段js代碼將編輯器中的值賦給表單中name是instacename的值的表單元素。比如,
本項(xiàng)示例中要用ajax對(duì)表單進(jìn)行處理的話,index模板文件中必須在表單處理前運(yùn)行的一段js代碼為:
…….//其他js代碼
var editor=FCKeditorAPI.GetInstance('comment');//comment是設(shè)置的instanceName值.
document.commentform.comment.value=editor.EditorDocument.body.innerHTML;//將編輯器中內(nèi)容處理后的源代碼
//賦值給commentform表單的comment 屬性元素值。
……//其他js代碼
注:個(gè)人認(rèn)為xajax比較不錯(cuò),只需要將主要精力花在后臺(tái)程序上。我也是用xajax進(jìn)行數(shù)據(jù)處理的。前臺(tái)代碼很簡(jiǎn)單。
茲將我的經(jīng)驗(yàn)與體會(huì)描述如下:應(yīng)用目的:將FCKeditor編輯器集成到Thinkphp中,使用戶能夠在線像編輯Word一樣處理即將發(fā)表的文字與圖像。
應(yīng)用軟件與環(huán)境:apache服務(wù)器2.0以上版本,PHP版本5.0以上,mysql5.0以上;Thinkphp版本1.5或以上,F(xiàn)ckeditor版本2.x。
應(yīng)用步驟:
1、下載FCKeditor2.x版本,將解壓后的文件夾FCKeditor復(fù)制到ThinkPHP文件夾下的Vendor目錄下,以便符合THinkPHP的第三方類(lèi)庫(kù)引入規(guī)則。
2、修改參數(shù):
首先,用EditPlus等軟件打開(kāi)FCKeditor目錄下的fckeditor_php5.php文件,找到第130行。出現(xiàn)內(nèi)容如下:
復(fù)制代碼 代碼如下:
public function __construct( $instanceName )
{$this->InstanceName = $instanceName ;
$this->BasePath= ' ' ;
$this->Width = '900′;
$this->Height = '400′;
$this->ToolbarSet = 'Default' ;
$this->Value = ' ';
$this->Config = array() ;
}
public function __construct( $instanceName ){$this->InstanceName = $instanceName ;
$this->BasePath = '/bm/ThinkPHP/Vendor/FCKeditor/' ;$this->Width = '900′;$this->Height = '400′;
$this->ToolbarSet = 'Default' ;$this->Value = ”;
其中,最關(guān)鍵的就是將Basepath設(shè)置好。
里面填寫(xiě)的就是fckeditor_php5.php文件相對(duì)于網(wǎng)站文檔根目錄(document root)的路徑。
其實(shí)這就是用以表征FCKeditor編輯器相對(duì)根目錄的路徑。比如服務(wù)器的文檔根目錄最下級(jí)是htdocs/或www/,
項(xiàng)目名為project,project項(xiàng)目文件夾下有Thinkphp系統(tǒng)文件包與項(xiàng)目文件包myapp。而且服務(wù)器沒(méi)有對(duì)該項(xiàng)目設(shè)置虛擬主機(jī)的話,
此時(shí)的文檔根目錄仍是www/或htdocs/,那么應(yīng)該是$this->BasePath='/project/ThinPHP/Vendor/FCKeditor/';
若是設(shè)置了虛擬主機(jī),即將project變?yōu)樘摂M的文檔根目錄,通過(guò)某一域名能夠直接訪問(wèn)網(wǎng)站項(xiàng)目的話,那么此時(shí),
$this->BasePath='/ThinPHP/Vendor/FCKeditor/';
其他的參數(shù)如寬度與高度可以填或不填,若填下的話就是編輯器的默認(rèn)高與寬。InstanceName是編輯器所在標(biāo)簽的id與name,此時(shí)不用理會(huì)。其他參數(shù)也不用理會(huì)。
其次,在FCKeditor\editor\filemanager\connectors\php\下面找到config.php文件,打開(kāi)它,找到30與34行。需要改寫(xiě)的參數(shù)如下:$Config['Enabled'] = true ;
$Config['UserFilesPath'] = ' ' ;
其中,第一個(gè)參數(shù)應(yīng)該設(shè)為true.默認(rèn)是true.第二個(gè)參數(shù)填寫(xiě)的是上傳文件的路徑,比如要顯示的圖片等。
我們?cè)趐roject目錄下建立一個(gè)uploads文件夾,那么$Config['UserFilesPath'] = ' /project/uploads/';
路徑規(guī)則與上一個(gè)basepath一樣。要是project是虛擬文檔根目錄的話,那么$Config['UserFilesPath'] =' /uploads/';
3、應(yīng)用程序:
比如在myapp項(xiàng)目中Lib目錄下IndexAction.class.php控制器類(lèi)中的index方法中,當(dāng)訪問(wèn)該程序時(shí),輸出的模板網(wǎng)頁(yè)里有form表單,
要求用戶輸入一篇文章,那么就可以用到編輯器.代碼示例如下,只顯示與fckeditor有關(guān)的代碼,其他代碼會(huì)略。
首先是服務(wù)器程序:
復(fù)制代碼 代碼如下:
public function index()
{……//其他代碼
vendor(“FCKeditor.fckeditor”);//包含F(xiàn)CKeditor類(lèi)庫(kù),TP引入第三方類(lèi)庫(kù)的系統(tǒng)方法,其路徑是相對(duì)于vendor目錄來(lái)說(shuō)的。
$editor= new FCKeditor(); //實(shí)例化FCKeditor對(duì)象
$editor->Width='980′;//設(shè)置編輯器實(shí)際需要的寬度。此項(xiàng)省略的話,會(huì)使用默認(rèn)的寬度。
$editor->Height='400′;//設(shè)置編輯器實(shí)際需要的高度。此項(xiàng)省略的話,會(huì)使用默認(rèn)的高度。
$this->Value=”;//設(shè)置編輯器初始值。也可以是修改數(shù)據(jù)時(shí)的設(shè)定值。可以置空。
$editor->InstanceName='comment';//設(shè)置編輯器所在表單內(nèi)輸入標(biāo)簽的id與name,即<input>標(biāo)簽的id與name。此處假
//設(shè)為comment.此處不可省,也要保持唯一性。表單上傳到服務(wù)器處理程序后,即可通過(guò)$_POST['comment']來(lái)讀取。
$html=$editor->Createhtml();//創(chuàng)建在線編輯器html代碼字符串,并賦值給字符串變量$html.
$this->assign('html',$html);//將$html的值賦給模板變量$html.在模板里通過(guò){$html}可以直接引用。
…….//其他代碼,包括輸出模板。
}
其次是對(duì)應(yīng)的html模板即index 文件。只需要在需要的地方插入編輯器即可,其他代碼與一般的<form>寫(xiě)法一樣。
…….<!–其他html代碼 –>
<div>
<form id=”commentform” name=”commentform” action=”">//action里填寫(xiě)表單處理程序,如'__APP__/Index/check'。
指的是IndexAction類(lèi)下的check()方法來(lái)處理提交的表單數(shù)據(jù)。
復(fù)制代碼 代碼如下:
<table style=”width:100%;”>
<tr>
<td style=”text-align:left;”>添加新評(píng)論:
</td>
</tr>
……//其他表單填寫(xiě)項(xiàng)
<tr>
<td > {$html}</td>
</tr>
<tr>
<td><input type=”submit” value=”提交評(píng)論” >
</td>
</tr>
</table>
</form>
</div>
到這里, 已經(jīng)可以用了。在表單處理程序里像通常處理表單元素那樣就行。但是,有的時(shí)候項(xiàng)目移植后,上傳的圖片等鏈接路徑會(huì)被錯(cuò)誤編譯,
以致不能正確顯示圖片等東西。通常是雙引號(hào)解析錯(cuò)誤,我還沒(méi)有解決。要想不出錯(cuò)的話,可以采取ajax的方式處理表單數(shù)據(jù)。
不過(guò)在進(jìn)行ajax處理之前,要先用一段js代碼將編輯器中的值賦給表單中name是instacename的值的表單元素。比如,
本項(xiàng)示例中要用ajax對(duì)表單進(jìn)行處理的話,index模板文件中必須在表單處理前運(yùn)行的一段js代碼為:
…….//其他js代碼
var editor=FCKeditorAPI.GetInstance('comment');//comment是設(shè)置的instanceName值.
document.commentform.comment.value=editor.EditorDocument.body.innerHTML;//將編輯器中內(nèi)容處理后的源代碼
//賦值給commentform表單的comment 屬性元素值。
……//其他js代碼
注:個(gè)人認(rèn)為xajax比較不錯(cuò),只需要將主要精力花在后臺(tái)程序上。我也是用xajax進(jìn)行數(shù)據(jù)處理的。前臺(tái)代碼很簡(jiǎn)單。
您可能感興趣的文章:
- thinkphp3.2嵌入百度編輯器ueditor的實(shí)例代碼
- ThinkPHP中使用Ueditor富文本編輯器
- ThinkPHP自動(dòng)轉(zhuǎn)義存儲(chǔ)富文本編輯器內(nèi)容導(dǎo)致讀取出錯(cuò)的解決方法
- TP3.2.3框架使用CKeditor編輯器在頁(yè)面中上傳圖片的方法分析
- 利用Electron簡(jiǎn)單擼一個(gè)Markdown編輯器的方法
- 利用Vue實(shí)現(xiàn)一個(gè)markdown編輯器實(shí)例代碼
- vue中利用simplemde實(shí)現(xiàn)markdown編輯器(增加圖片上傳功能)
- SpringBoot使用Editor.md構(gòu)建Markdown富文本編輯器示例
- Thinkphp5框架中引入Markdown編輯器操作示例
相關(guān)文章
Html 編輯器粘貼內(nèi)容過(guò)濾技術(shù)詳解
最近在解決數(shù)據(jù)粘貼方面取得了不少進(jìn)展,作為Html在線編輯器所必須具備的技術(shù),在這里詳細(xì)給大家介紹并提供實(shí)現(xiàn)參考。2010-05-05
自己打造HTML在線編輯器的實(shí)現(xiàn)難點(diǎn)分析
到目前為止,我已經(jīng)開(kāi)發(fā)了兩個(gè)HTML編輯器了,一個(gè)用在公司的CMS項(xiàng)目,另一個(gè)用在這個(gè)Blog(TidyEditor,暫時(shí)沒(méi)有單獨(dú)發(fā)布)。下面總結(jié)一下開(kāi)發(fā)的難點(diǎn)以及應(yīng)對(duì)方法。2011-03-03
在asp.net中KindEditor編輯器的使用方法小結(jié)
由于國(guó)外的服務(wù)器好象對(duì)一些要引用dll編輯器由于安全問(wèn)題,鎖定了web.config中的一些權(quán)限,在先試了FreeTexbox不行,FCKEditor也不行,因?yàn)槎际且胐ll文件,最后同事介紹一款 純js的kindeditor編輯器,2010-12-12
19款Javascript富文本網(wǎng)頁(yè)編輯器
19款javascript富文本編輯器。也許你還有興趣查看15個(gè)基于Web的HTML編輯器和6款所見(jiàn)即所得(WYSIWYG)的在線Web編輯器。2010-11-11
syntaxhighlighter 去掉右上角問(wèn)號(hào)圖標(biāo)的三種方法
syntaxhighlighter可以高亮著色顯示幾乎所有語(yǔ)言形式的源代碼,還可以顯示行號(hào),是一款深受網(wǎng)站建設(shè)人員喜愛(ài)的工具,并且它還是免費(fèi)的2013-11-11
FCKeditor 網(wǎng)頁(yè)在線編輯器的使用方法
FCKeditor是一個(gè)功能強(qiáng)大支持所見(jiàn)即所得功能的文本編輯器,可以為用戶提供微軟office軟件一樣的在線文檔編輯服務(wù)。2010-03-03

