实例化CKEditor4实例时,如何将自定义值传递给CKFinder3?
在使用CKEditor4时,使用实例化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
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>