簡體   English   中英

實例化CKEditor4實例時如何將自定義值傳遞給CKFinder3?

[英]How do I pass custom values to CKFinder3 when instantiating a CKEditor4 instance?

使用CKEditor4時,使用pass將變量pass到CKFinder3(ASP)連接器時遇到一些麻煩。

我使用以下命令創建編輯器實例:

CKFinder.setupCKEditor( myEditor, {
    pass:         'testVar',
    testVar:    'nooice',
    ...
});

但是該變量似乎並沒有將其傳遞給CKFinder。

如果我直接將此代碼添加到CKFinder配置中,則可以正常運行:

config.pass = 'testVar';
config.testVar = 'nooice';

很好,但是我要傳遞的值是動態的,因此當我在頁面上調用.setupCKEditor()時,需要傳遞它們。 我也嘗試過使用connectorInfo: 'testVar=nooice' ,但這也不起作用。

有人碰到這個嗎? 我在此問題上找到了一個很好的答案和示例, 如何在ckeditor中為圖片(ckfinder)按鈕傳遞查詢字符串參數? ,但是所描述的解決方案基本上是我正在做的事情,對我沒有影響。

已經能夠在使用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' 
    });

在上面的示例中,您正在傳遞testtoken參數。

在此處輸入圖片說明


如果使用手動集成方法,則需要將參數附加到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參數: idtyperesourceTypelangCodeCKEditorCKEditorFuncNum 如果您想使用更多參數,則需要將其作為CKFinder配置設置手動傳遞,並且需要在ckfinder/ckfinder.html文件中進行設置(您需要對其進行修改),例如

<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>

筆記:

  • 如果您希望在使用CKEditor圖像對話框上載選項卡上載文件時發送額外的參數,則還需要將它們添加到filebrowserXYZUploadUrl配置設置中(您可以使用上面示例中所示的其他參數)。
  • 請注意,這些參數並非完全動態。 每次編輯器加載時都定義一次,除非您銷毀/創建編輯器實例或使用編輯器重新加載頁面,否則以后就不能更改它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM