而且可以用直接上傳和ajax兩種方式處理內(nè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的第三方類庫引入規(guī)則。
2、修改參數(shù):
首先,用EditPlus等軟件打開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ù)器沒有對(duì)該項(xiàng)目設(shè)置虛擬主機(jī)的話,
此時(shí)的文檔根目錄仍是www/或htdocs/,那么應(yīng)該是$this->BasePath='/project/ThinPHP/Vendor/FCKeditor/';
若是設(shè)置了虛擬主機(jī),即將project變?yōu)樘摂M的文檔根目錄,通過某一域名能夠直接訪問網(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文件,打開它,找到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)訪問該程序時(shí),輸出的模板網(wǎng)頁里有form表單,
要求用戶輸入一篇文章,那么就可以用到編輯器.代碼示例如下,只顯示與fckeditor有關(guān)的代碼,其他代碼會(huì)略。
首先是服務(wù)器程序:
復(fù)制代碼 代碼如下:
public function index()
{……//其他代碼
vendor(“FCKeditor.fckeditor”);//包含F(xiàn)CKeditor類庫,TP引入第三方類庫的系統(tǒng)方法,其路徑是相對(duì)于vendor目錄來說的。
$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ù)器處理程序后,即可通過$_POST['comment']來讀取。
$html=$editor->Createhtml();//創(chuàng)建在線編輯器html代碼字符串,并賦值給字符串變量$html.
$this->assign('html',$html);//將$html的值賦給模板變量$html.在模板里通過{$html}可以直接引用。
…….//其他代碼,包括輸出模板。
}
其次是對(duì)應(yīng)的html模板即index 文件。只需要在需要的地方插入編輯器即可,其他代碼與一般的form>寫法一樣。
…….!–其他html代碼 –>
div>
form id=”commentform” name=”commentform” action=”">//action里填寫表單處理程序,如'__APP__/Index/check'。
指的是IndexAction類下的check()方法來處理提交的表單數(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ò)誤,我還沒有解決。要想不出錯(cuò)的話,可以采取ajax的方式處理表單數(shù)據(jù)。
不過在進(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編輯器在頁面中上傳圖片的方法分析
- 利用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編輯器操作示例