2012-06-15 187 views
0

我有一個關於在CakePHP中實現所見即所得編輯器的問題。我正在爲我工​​作的員工開發一個內部網。我目前正在使用CakePHP 1.3。我發現這個倉庫CakePHP和WYSIWYG編輯器

https://github.com/josegonzalez/cakephp-wysiwyg-helper/tree/1.3

其中包含捆綁在一起的幾個不同的所見即所得的編輯器。我遵循指示,並確保我下載了NicEdit的JS發行版(與TinyMCE一起,在我與NicEdit掙扎後,仍然沒有任何作品)。

我在我看來運行

echo $this->Nicedit->input('content'); 

。當我在瀏覽器中加載頁面時,輸入框會正確顯示,但是沒有用於文本編輯的工具欄。在該頁面時運行腳本的檢查,這個代碼塊下

<div class="input textarea required"><label for="AnnouncementContent">Content</label><textarea name="data[Announcement][content]" cols="30" rows="6" id="AnnouncementContent" ></textarea></div><script type="text/javascript"> 
     var area1; 
     function makePanel() { 
      area1 = new nicEditor({fullPanel : true}).panelInstance(
       'AnnouncementContent', 
       {hasPanel : true} 
      ); 
     } 
     bkLib.onDomLoaded(function() { makePanel(); });</script>  

我收到此錯誤:未捕獲的ReferenceError:bkLib沒有定義

我已經花了幾個小時試圖解決這一問題沒有無濟於事。有沒有人有解決這個問題的一些見解?

回答

0

下面是如何設置的TinyMCE在最近的1.3項目,不使用該插件:

從我的觀點,即使用TinyMCE的編輯器:

//tell template to include the tinyMCE javascript file 
<?php 
if(isset($javascript)): 
    echo $javascript->link('tiny_mce/tiny_mce.js'); 
endif; 
?> 

//Build the form I need 
<div class="responses form"> 
<?php echo $this->Form->create(null, array('controller' => 'Responses', 'action' => 'add')); ?> 
    <fieldset> 
     <legend>Add Response</legend> 
    <?php 
     echo $form->hidden('listing_id', array('value' => $tempid)); 
     echo $this->Form->input('content'); 
    ?> 
    </fieldset> 
<?php echo $this->Form->end(__('Submit', true));?> 
</div> 

//set up the editor 
<script type="text/javascript"> 
    tinyMCE.init({ 
     theme : "simple", 
     mode : "textareas", 
     convert_urls : false 
    }); 
</script> 

我知道這是不是真的回答你問題是否真的想要使用該插件,但如果您只使用TinyMCE就可以了,您可以用這種方法很容易地設置它。最好的部分是,它會自動轉換爲HTML,以便您可以保存到數據庫。當您從數據庫中檢索數據時,它將採用正確格式化的HTML,因此您可以輕鬆顯示它。

根據您希望使用哪個文本區域,您也可以在init方法中更具體。我很難讓它只在特定的文本區域激活,但你可能會有不同的運氣。該文檔是here。您還可以打開更高級的主題。文檔介紹了這些選項。