实例化CKEditor4实例时,如何将自定义值传递给CKFinder3?

实例化CKEditor4实例时,如何将自定义值传递给CKFinder3?,ckeditor,ckeditor4.x,ckfinder,Ckeditor,Ckeditor4.x,Ckfinder,在使用CKEditor4时,使用pass将变量传递给我的CKFinder3(ASP)连接器时遇到一些问题 我使用以下命令创建编辑器实例: CKFinder.setupCKEditor( myEditor, { pass: 'testVar', testVar: 'nooice', ... }); 但是这个变量似乎并没有传递给CKFinder 如果我直接将此代码添加到CKFinder配置中,它确实可以工作: config.pass = 'testVa

在使用CKEditor4时,使用
pass
将变量传递给我的CKFinder3(ASP)连接器时遇到一些问题

我使用以下命令创建编辑器实例:

CKFinder.setupCKEditor( myEditor, {
    pass:         'testVar',
    testVar:    'nooice',
    ...
});
但是这个变量似乎并没有传递给CKFinder

如果我直接将此代码添加到CKFinder配置中,它确实可以工作:

config.pass = 'testVar';
config.testVar = 'nooice';
这很好,但是我想要传递的值是动态的,所以我需要在调用页面上的
.setupCKEditor()
时传递它们。我也尝试过使用connectorInfo:'testVar=nooice',但这也不起作用

有人碰到过这个吗?我在这个问题上找到了一个很好的答案和例子,但描述的解决方案基本上就是我正在做的,对我没有影响

我已经能够在CKEditor5测试中使用以下方法实现此功能:

ClassicEditor.create( document.querySelector( '#bodyContent' ), {
    ckfinder: {
        uploadUrl: '/ckfinder3/connector?command=QuickUpload&type=Images&responseType=json',
        options: {
            pass: 'testVar',
            testVar: 'nooice'
        }
    },
    ...
} );
但我无法在CKEditor4中找到它。

您可以这样传递它们:

    var editor = CKEDITOR.replace( 'editor1', {
        language : 'en',        
    } );

    CKFinder.setupCKEditor( editor, {           
        test : 'testvalA',
        token : '7901a26e4bc422aef54eb45A',
        pass : 'token,test' 
    });
在上面的示例中,您正在传递
test
token
参数


如果使用手动集成方法,则需要将参数附加到
filebrowserXYZBrowseUrl
配置设置,如下所示:

    var editor = CKEDITOR.replace( 'editor1', {     

        filebrowserBrowseUrl: '../ckfinder/ckfinder.html?id=abc&foo=bar&test=custom',
        filebrowserImageBrowseUrl: '/ckfinder/ckfinder.html?type=Images&id=abc&foo=bar&test=custom',
        filebrowserUploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files&id=abc&custom=test',
        filebrowserImageUploadUrl: '/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images&id=abc&custom=test',
    } );
现在的问题是,CKFinder将只传递预定义的一组或URL参数:
id
type
resourceType
langCode
CKEditor
CKEditorFuncNum
。如果您想使用更多参数,您需要手动将其作为CKFinder配置设置传递,并且需要在
CKFinder/CKFinder.html
文件中执行此操作(您需要修改它),例如


CKFinder 3-文件浏览器
函数getUrlParams(){
var vars={};
window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,函数(匹配,键,值){
变量[键]=值;
} );
返回变量;
}
var params=getUrlParams(),
配置={pass:'},
ckfServicedParams=['id','type','resourceType','langCode','CKEditor','CKEditorFuncNum'];
for(参数中的变量键){
if(ckfServicedParams.indexOf(key)<0){
config.pass=config.pass.concat(config.pass?’,“+key:key);
config[key]=params[key];
}
}
CKFinder.start(配置);
注意事项:

  • 如果您希望在使用CKEditor Image Dialog upload Tab上载文件时发送额外的参数,则还需要将它们添加到
    filebrowserXYZUploadUrl
    配置设置中(您可以使用上述示例中所示的不同参数)
  • 请注意,这些参数并不完全是动态的。在每次加载编辑器时定义它们一次,之后不能更改它们,除非销毁/创建编辑器实例或使用编辑器重新加载页面
谢谢,我想我已经开始工作了,但是你现在有没有任何理由让
文件浏览器浏览器浏览器:'/ckeditor4/js/ckfinder3/connector?command=QuickUpload&type=Files',
和/或
文件浏览器浏览器浏览器:'/ckeditor4/js/ckfinder3/connector?command=QuickUpload&type=Images',
创建连接器时出现是否会导致此问题?当我设置这些值时,这些值似乎停止传递。它停止工作,因为这是一种称为手动集成的不同集成方法。您不能使用与
setupCKEditor
的手动集成。这是“非此即彼”的选择。请问。有没有一种方法可以使用手动集成并传递一个值?我尝试删除
setupCKEditor
,只设置各种
filebrowserBrowseUrl
选项,同时将我的变量添加到它们的URL值中,但没有效果。当Finder加载时,初始文档会看到参数,但所有后续的连接器调用都不会得到传递给它们的值到我的配置,如中所示,我已更新我的答案。使用手动集成方法是可能的,但您需要添加一些额外的代码来完成。我想我会把它报告给CKSoad询问他们是否可以考虑增加一个额外的参数一个特征请求。
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no">
    <title>CKFinder 3 - File Browser</title>
</head>
<body>

<script src="ckfinder.js"></script>
<script>
    function getUrlParams()  {
            var vars = {};
            window.location.href.replace( /[?&]+([^=&]+)=([^&]*)/gi, function( match, key, value ) {
                vars[ key ] = value;
            } );

            return vars;
    }


    var params = getUrlParams(),
        config  = { pass : '' },
        ckfServicedParams = [ 'id', 'type', 'resourceType', 'langCode', 'CKEditor', 'CKEditorFuncNum' ];

    for( var key in params ){
        if ( ckfServicedParams.indexOf( key ) < 0 ) {
            config.pass = config.pass.concat( config.pass ? ','+key : key);
            config[key] = params[key];
        }
    }

    CKFinder.start( config ); 
</script>

</body>
</html>