我正在尝试将图像和文件上传添加到我的 CKEditor 实例(在 CakePHP 应用程序中)。 CKEditor 一直工作正常,但我无法让 CKFinder 部分工作。我可以显示“浏览服务器”按钮,但是当我单击它时,我会看到一个包含以下消息的窗口:
在此服务器上找不到请求的 URL /ckfinder/ckfinder.html。
我尝试了各种路径组合,但显然我没有找到正确的路径!
这是我到目前为止所拥有的:
文件结构:
In /app/webroot/js I have ckeditor and ckfinder
In /app/webroot/ I have files, which is what I'd like to upload to (ideally files/Images and files/PDF, but that doesn't matter so much)
我已更改 ckfinder/config.php 中的路径,如下所示:
$baseUrl = '/files/';
$baseDir = '/www/MCS/app/webroot/files/'; (/www/MCS is the path to the app)
在我的视图文件中,我有以下内容:
<script type="text/javascript">
var instance = CKEDITOR.instances['PageContent'];
if(instance)
{
CKEDITOR.remove(instance);
}
var editor =
CKEDITOR.replace( 'PageContent', {
toolbar: 'Page',
width: '737',
height: '280',
filebrowserBrowseUrl : 'ckfinder/ckfinder.html',
filebrowserImageBrowseUrl : '/ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl : '/ckfinder/ckfinder.html?Type=Flash',
filebrowserUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
filebrowserImageUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl : '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
});
</script>
我尝试更改上面代码中的路径,添加完整 URL 的各个部分,但没有任何帮助。
我正在使用最新版本的 CKEditor 和 CKFinder 以及 CakePHP 2.0。
这是我修复它的方法:
将 ckfinder 下载到 /app/webroot/js/ckfinder
在/app/webroot/js/ckfinder/config.php中,我有
$baseUrl = 'http://localhost/mysite/app/webroot/js/ckfinder/userfiles/';
我将验证功能(感谢上面的 Natdrip)更改为
function CheckAuthentication()
{
session_name("CAKEPHP");
session_start();
if( isset($_SESSION['Auth']['User']) ) { return true; }
return false;
}
我在视图中设置它使用:
var editor =
CKEDITOR.replace( 'PageContent', {
toolbar: 'Page',
width: '700',
height: '280',
filebrowserBrowseUrl : '/mysite/app/webroot/js/ckfinder/ckfinder.html',
filebrowserImageBrowseUrl : '/mysite/app/webroot/js/ckfinder/ckfinder.html?type=Images',
filebrowserFlashBrowseUrl : '/mysite/app/webroot/js/ckfinder/ckfinder.html?type=Flash',
filebrowserUploadUrl : '/mysite/app/webroot/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
filebrowserImageUploadUrl : '/mysite/app/webroot/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl : '/mysite/app/webroot/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
});
完成此操作后,当我在 CKeditor 中单击“添加图像”时,我可以看到“浏览服务器”按钮,但它给出了通常的“Cakephp 找不到控制器错误”。
因此,我编辑了 htaccess 文件,以便任何定向到 ckfinder 的内容都不会寻找控制器。为此,我添加了:
RewriteRule ^ckfinder/ - [L]
在所有 3 个文件中的
RewriteEngine on
之后
然后就成功了!
我不知道这是否是最好的方法。
我的 ckeditor 位于@
webroot/js/
我下载并安装了 http://labs.core Five.com/Projects/FileManager/ 并将其定位于 @ webroot/js/ckeditor/filemanager
为了
ckeditor/config.js
我添加了以下代码:
CKEDITOR.editorConfig = function( config )
{
// Define changes to default configuration here. For example:
config.uiColor = '#AADC6E';
config.width = '100%';
config.filebrowserBrowseUrl = '/js/ckeditor/filemanager/index.html';
config.filebrowserImageBrowseUrl = '/js/ckeditor/filemanager/index.html?type=Images';
config.filebrowserFlashBrowseUrl = '/js/ckeditor/filemanager/index.html?type=Flash';
config.filebrowserUploadUrl = '/js/ckeditor/filemanager/connectors/php/filemanager.php';
config.filebrowserImageUploadUrl = '/js/ckeditor/filemanager/connectors/php/filemanager.php?command=QuickUpload&type;=Images';
config.filebrowserFlashUploadUrl = '/js/ckeditor/filemanager/connectors/php/filemanager.php?command=QuickUpload&type;=Flash';
};
我创建了文件夹
/app/webroot/assets/img/
filemanager.config.js
我切换了
var fileRoot = '/app/webroot/assets/img/';
在
/app/webroot/js/ckeditor/filemanager/connectors/php/filemanager.config.php
中我添加到auth()
session_name("CAKEPHP");
session_start();
if( isset($_SESSION['Auth']['User']) )
{
return true;
}
return false;
在添加/编辑视图中我添加了以下内容:
echo $this->Form->textarea('Content',array('class'=>'ckeditor'));
而且它有效! 这是我用于参考的网站http://www.hashtwo.com/blog/integrating-a-file-browser-into-ckeditor-cakephp
你提到你在 /js 中有 ckfinder,所以我会在所有路径前面加上
/js
。
filebrowserBrowseUrl : '/js/ckfinder/ckfinder.html',
filebrowserImageBrowseUrl : '/js/ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl : '/js/ckfinder/ckfinder.html?Type=Flash',
filebrowserUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
filebrowserImageUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl : '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
我工作了很长时间。我的 cakephp 2.3 解决方案在最后 将 ckfinder 2.3.1 版本放入 webroot/js/ckfinder 中 然后在自定义助手中,我将以下代码作为 getFck 函数
function _getFck( $pToReplaceId, $pHtmlContent=null, $pLabel=null ){
$result = "";
if ( $pLabel != null ){
$result .= "<div class=\"input text\">\n";
$result .= "<label for=\"$pToReplaceId\">".__($pLabel)."</label>\n";
$result .= "</div>\n";
}
App::uses('FormHelper', 'View/Helper');
$fh = new FormHelper(new View());
$result .= $fh->input('comment', array(
'id' => $pToReplaceId,
'name' => $pToReplaceId,
'type' => 'textarea',
'value' => $pHtmlContent,
));
$result .= "<script>var ckEditor = CKEDITOR.replace( '$pToReplaceId', {
removeButtons: '',
toolbar: 'Page',
skin: 'moono',
lang: 'fr',
filebrowserBrowseUrl: '/js/ckfinder/ckfinder.html',
filebrowserImageBrowseUrl: '/js/ckfinder/ckfinder.html?Type=Images',
filebrowserFlashBrowseUrl: '/js/ckfinder/ckfinder.html?Type=Flash',
filebrowserUploadUrl: '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files',
filebrowserImageUploadUrl: '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images',
filebrowserFlashUploadUrl: '/js/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash'
} );</script>";
echo $result;
}
对于 /js/ckfinder/Config.php 文件中的配置,可以使用以下方法和设置:
$baseUrl = "http://".$_SERVER['HTTP_HOST']."/files/ckFinderFiles/";//working on prod
$baseDir = $_SERVER['DOCUMENT_ROOT'].'/app/webroot/files/ckFinderFiles/';//working on prod
不要忘记如上所述修改 CheckAuthentication 方法...