|
|
|
สอบถามการใช้ง Ckeditor และ Ckfinder ใน Codeigniter ครับ |
|
|
|
|
|
|
|
หากผมกำหนดค่าต่าง ๆ ใน View ดังนี้
Code (PHP)
<script src="<?php echo base_url(); ?>js/ckeditor/ckeditor.js" type="text/javascript"></script>
<script src="<?php echo base_url(); ?>js/ckfinder/ckfinder.js" type="text/javascript"></script>
<?php echo form_open('upload_file/add_operation'); ?>
<textarea cols="80" id="message" name="message" rows="10" >ทดสอบความหล่อ</textarea>
<script type="text/javascript">
//<![CDATA[
CKEDITOR.replace( 'message',{
skin : 'kama',
language : 'en',
extraPlugins : 'uicolor',
uiColor : '#006699',
height : 400,
width : 750,
toolbar :
[
['Source','-','Templates'],
['Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
],
filebrowserBrowseUrl : '<?php echo base_url(); ?>js/ckfinder/ckfinder.html',
filebrowserImageBrowseUrl : '<?php echo base_url(); ?>js/ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl : '<?php echo base_url(); ?>js/ckfinder/ckfinder.html?Type=Flash',
filebrowserUploadUrl : '<?php echo base_url(); ?>js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
filebrowserImageUploadUrl : '<?php echo base_url(); ?>js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl : '<?php echo base_url(); ?>js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
} );
//]]>
</script>
<?php
echo form_submit('upload', 'Add');
echo form_close();
?>
จะสามารถ ใช้งาน Ckfinder ได้ อัพโหลดรูปภาพได้ปกติ
แต่ถ้าหากผมกำหนดค่าใน Controller ก่อน อย่างนี้
Code (PHP)
function index()
{
$this->load->library('ckeditor');
$this->load->library('ckFinder');
//configure base path of ckeditor folder
$this->ckeditor->basePath = 'js/ckeditor/';
$this->ckeditor->config['skin'] = "kama";
$this->ckeditor->config['uiColor'] = "#D0E5F5";
//Setting a custom toolbar
$this->ckeditor->config['toolbar'] = array(
array('NewPage','Preview','-','Source','-','Templates'),
array('Format','Font','FontSize'),
array('Bold','Italic','Underline','-','JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock','-','NumberedList','BulletedList'),
array('Outdent','Indent','-','BidiLtr','BidiRtl'),
array('TextColor','BGColor','Smiley'),
array('Image','Link','Unlink','Table','HorizontalRule','SpecialChar','PageBreak','SpellChecker')
);
$this->ckeditor->config['language'] = 'th';
$this->ckeditor->config['filebrowserBrowseUrl'] = base_url().'js/ckfinder/ckfinder.html';
$this->ckeditor->config['filebrowserImageBrowseUrl'] = base_url().'js/ckfinder/ckfinder.html?type=Images';
$this->ckeditor->config['filebrowserFlashBrowseUrl'] = base_url().'js/ckfinder/ckfinder.html?type=Flash';
$this->ckeditor->config['filebrowserUploadUrl'] = base_url().'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files';
$this->ckeditor->config['filebrowserImageUploadUrl'] = base_url().'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images';
$this->ckeditor->config['filebrowserFlashUploadUrl'] = base_url().'js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash';
//configure ckfinder with ckeditor config
$this->ckfinder->SetupCKEditor($this->ckeditor, base_url().'js/ckfinder');
$this->load->view('gallery');
}
แล้วไปเรียกใช้งานใน View ดังนี้
Code (PHP)
<script src="<?php echo base_url(); ?>js/ckeditor/ckeditor.js" type="text/javascript"></script>
<script src="<?php echo base_url(); ?>js/ckfinder/ckfinder.js" type="text/javascript"></script>
<?php
echo form_open('upload_file/add_operation');
echo $this->ckeditor->editor('editor1', 'ทดสอบ');
echo form_submit('upload', 'Add');
echo form_close();
?>
เวลาเรียกใช้งาน Ckfinder จะขึ้น The page you requested was not found. ไม่สามารถเข้าอัพภาพได้
ซึ่่งพอผม วิว ซ๊อส ดู ตัว javascript จะมีค่า
Code (PHP)
<script type="text/javascript">//<![CDATA[
CKEDITOR.replace('editor1', {"skin":"kama","uiColor":"#D0E5F5","toolbar":[["NewPage","Preview","-","Source","-","Templates"],["Format","Font","FontSize"],["Bold","Italic","Underline","-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","NumberedList","BulletedList"],["Outdent","Indent","-","BidiLtr","BidiRtl"],["TextColor","BGColor","Smiley"],["Image","Link","Unlink","Table","HorizontalRule","SpecialChar","PageBreak","SpellChecker"]],"language":"th","filebrowserBrowseUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/ckfinder.html","filebrowserImageBrowseUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/ckfinder.html?type=Images","filebrowserFlashBrowseUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/ckfinder.html?type=Flash","filebrowserUploadUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Files","filebrowserImageUploadUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Images","filebrowserFlashUploadUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Flash"});
//]]></script>
ตรง filebrowserBrowseUrl , filebrowserImageBrowseUrl มันไม่เหมือนตอนเรากำหนดค่าเลยครับ
ซึ่งเราจะต้องกำหนดค่าที่ Controller ยังไงครับ
Tag : PHP, JavaScript
|
|
|
|
|
|
Date :
2012-01-20 11:32:12 |
By :
ไวยวิทย์ |
View :
2337 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อย่างแรก base_url() ไม่ควรจะได้ \/CodeIgniter\/index.php\/
แต่ควรจะได้ http://domain.tld/Codeigniter/ โดยไม่มี index.php ถ้ามี index.php ติดมามันควรเป็นค่าที่ได้จากฟังก์ชั่น site_url()
ผมไม่ได้ใช้ ckeditor เลยไม่รู้จะแก้ให้ตรงจุดยังไงนะครับ ยังไงก็ลองตรวจพวกนี้ดู
ลองเปลี่ยนจาก base_url().'js/ckfinder/ckfinder.html'
เป็น base_url('js/ckfinder/ckfinder.html')
ลองกำหนดค่าจากใน controller เช่น
$output['ckf1'] = base_url('js/ckfinder/ckfinder.html');
$output['ckf2'] = base_url().'js/ckfinder/ckfinder.html';
แล้วลอง echo $ckf1 . '<br />' . $ckf2; ใน views ดูว่ามันได้ url ที่ถูกต้องมั้ย
เพราะผมเห็นว่ามันแปลงจาก dir/dir เป็น dir\/dir ทั้งหมดเลย เลยสงสัยว่ามันจะเป็นยังไงถ้าจับค่าไปใส่ไว้ข้างใน base_url(..) แทนที่จะเอามาต่อท้าย
ถ้าข้างบนลองแล้วถูกต้องปกติ
ก็ต้องดูว่า ckeditor class มันไปทำอีท่าไหนถึงแปลง / เป็น \/ ซึ่งอาจเป็นสาเหตุให้ error 404
|
|
|
|
|
Date :
2012-01-20 16:28:57 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับ คุณ วี
ผมลองเปลี่ยน Controller เป็น base_url('js/ckfinder/ckfinder.html') ตามที่คุณ วี แนะนำ
ดูซอสโค้ดแล้วจะได้ จาวาสคริป ดังนี้
Code (PHP)
<script type="text/javascript">//<![CDATA[
CKEDITOR.replace('editor1', {"skin":"kama","uiColor":"#D0E5F5","toolbar":[["NewPage","Preview","-","Source","-","Templates"],["Format","Font","FontSize"],["Bold","Italic","Underline","-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","NumberedList","BulletedList"],["Outdent","Indent","-","BidiLtr","BidiRtl"],["TextColor","BGColor","Smiley"],["Image","Link","Unlink","Table","HorizontalRule","SpecialChar","PageBreak","SpellChecker"]],"language":"th","filebrowserBrowseUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/ckfinder.html","filebrowserImageBrowseUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/ckfinder.html?type=Images","filebrowserFlashBrowseUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/ckfinder.html?type=Flash","filebrowserUploadUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Files","filebrowserImageUploadUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Images","filebrowserFlashUploadUrl":"\/CodeIgniter\/index.php\/js\/ckfinder\/core\/connector\/php\/connector.php?command=QuickUpload&type=Flash"});
//]]></script>
และ
ลองกำหนดค่าจากใน controller เช่น
$output['ckf1'] = base_url('js/ckfinder/ckfinder.html');
พอ echo $ckf1 ในหน้า View ออกมาจะได้ ดังนี้ ครับ http://localhost/Codeigniter/js/ckfinder/ckfinder.html
ดูเหมือน จะเซตค่า filebrowserFlashBrowseUrl ใน Controller ไม่ได้ หรือผมเซตค่าผิด หรือเปล่า
|
|
|
|
|
Date :
2012-01-20 16:53:28 |
By :
ไวยวิทย์ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ถ้าอย่างนั้นมันน่าจะเป็นเพราะ ckeditor อย่างเดียวแล้วครับ เพราะฟังก์ชั่นเดียวกัน เขียนเหมือนกัน แต่ออกมาไม่เหมือนกัน
ต้องดูการ config ของ ckeditor หรือดูใน class ว่ามันไป add backslash ตรงไหน แล้วอาจต้องเขียน class extends ออกมาแก้ตรงนั้น
|
|
|
|
|
Date :
2012-01-20 17:39:13 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ครับ ขอบคุณครับ คุณ วี
|
|
|
|
|
Date :
2012-01-21 11:21:49 |
By :
ไวยวิทย์ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|