ThinkPHP中FCKeditor編輯器的使用方法
更新時(shí)間:2012年07月05日 17:11:45 作者:
前段時(shí)間一直為TP尋找好用的在線編輯器而苦惱,經(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的第三方類庫(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è)置好。
里面填寫的就是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行。需要改寫的參數(shù)如下:$Config['Enabled'] = true ;
$Config['UserFilesPath'] = ' ' ;
其中,第一個(gè)參數(shù)應(yīng)該設(shè)為true.默認(rèn)是true.第二個(gè)參數(shù)填寫的是上傳文件的路徑,比如要顯示的圖片等。
我們?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控制器類中的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類庫(kù),TP引入第三方類庫(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>寫法一樣。
…….<!–其他html代碼 –>
<div>
<form id=”commentform” name=”commentform” action=”">//action里填寫表單處理程序,如'__APP__/Index/check'。
指的是IndexAction類下的check()方法來(lái)處理提交的表單數(shù)據(jù)。
<table style=”width:100%;”>
<tr>
<td style=”text-align:left;”>添加新評(píng)論:
</td>
</tr>
……//其他表單填寫項(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的第三方類庫(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è)置好。
里面填寫的就是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行。需要改寫的參數(shù)如下:$Config['Enabled'] = true ;
$Config['UserFilesPath'] = ' ' ;
其中,第一個(gè)參數(shù)應(yīng)該設(shè)為true.默認(rèn)是true.第二個(gè)參數(shù)填寫的是上傳文件的路徑,比如要顯示的圖片等。
我們?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控制器類中的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類庫(kù),TP引入第三方類庫(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>寫法一樣。
…….<!–其他html代碼 –>
<div>
<form id=”commentform” name=”commentform” action=”">//action里填寫表單處理程序,如'__APP__/Index/check'。
指的是IndexAction類下的check()方法來(lái)處理提交的表單數(shù)據(jù)。
復(fù)制代碼 代碼如下:
<table style=”width:100%;”>
<tr>
<td style=”text-align:left;”>添加新評(píng)論:
</td>
</tr>
……//其他表單填寫項(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)文章
FCKeditor smarty 編輯器的應(yīng)用PHP
自己仔細(xì)研究一下很容易解決你這個(gè)問(wèn)題的。這并不是一個(gè)很困難的任務(wù)。其實(shí)這里很多都是菜鳥(niǎo)級(jí)別的2012-07-07頁(yè)面上存在多個(gè)FckEditor編輯器的驗(yàn)證方法
FCKeditor是一個(gè)專門使用在網(wǎng)頁(yè)上屬于開(kāi)放源代碼的所見(jiàn)即所得文字編輯器。它志于輕量化,不需要太復(fù)雜的安裝步驟即可使用。它可和PHP、JavaScript、ASP、ASP.NET、ColdFusion、Java、以及ABAP等不同的編程語(yǔ)言相結(jié)合。2010-03-03FCKEditor超級(jí)鏈接默認(rèn)新窗口打開(kāi)的修改方法
經(jīng)常在后臺(tái)編輯超鏈接的朋友,希望將頁(yè)面鏈接,默認(rèn)是新窗口打開(kāi),因?yàn)檫@樣用戶體驗(yàn)好點(diǎn),所以將FCKEditor簡(jiǎn)單的修改下。2010-06-06寶麗通實(shí)現(xiàn)連續(xù)播放實(shí)現(xiàn)代碼
最近在研究如何才能實(shí)現(xiàn)連續(xù)播放功能,之前本打算用Asp生成asx播放列表,再交給寶利通播放, 不過(guò)看似有點(diǎn)麻煩,仔細(xì)翻閱官方開(kāi)發(fā)文檔,發(fā)現(xiàn)播放器有個(gè)事件2008-09-09autogrow 讓FCKeditor高度隨內(nèi)容增加的插件
讓FCKeditor高度隨內(nèi)容增加的插件,這個(gè)插件在默認(rèn)情況下可能運(yùn)行不正常,必須做一點(diǎn)修改才可以。2011-02-02快速解決百度編譯器json報(bào)錯(cuò)的問(wèn)題
下面小編就為大家?guī)?lái)一篇快速解決百度編譯器json報(bào)錯(cuò)的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08