繁体   English   中英

CKEditor/CKFinder 与 CakePHP 2.0

[英]CKEditor/ CKFinder with CakePHP 2.0

我正在尝试将图像和文件上传添加到我的 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.corefive.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 解决方案最后放入 webroot/js/ckfinder 2.3.1 版的 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 方法......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM