2016-04-29 1514 views
0

我有TinyMCE和拖放圖像上傳工作正常。我已經指定了images_upload_url: 'handler.php'並編寫了接收數據並正確處理它的處理程序。TinyMCE圖像上傳覆蓋images_upload_handler

但是,在圖像被放到頁面上時,我想動態傳遞給客戶端的handler.php中的一個額外參數。

我在文檔中看到,您可以通過編寫自己的images_upload_handler函數來「滾動自己的」函數。這就足夠了,但是我寧願使用現有的TinyMCE來簡化。我想知道有沒有一種方法可以在默認的images_upload_handler函數運行之前動態地改變images_upload_url以動態地附加GET參數(例如?foo = bar)?或者有沒有一種方法可以爲images_upload_handler指定我自己的函數,但之後直接調用默認的「父」TinyMCE函數?我想是這樣的(就像樣機/想法):

tinyMCE.init({ 
    selector: 'textarea', 
    images_upload_url: 'handler.php', 
    images_upload_handler: function (blobInfo, success, failure) { 
     // change images_upload_url to handler.php?foo=bar 
     // call default TinyMCE images_upload_handler function. 
    } 
}) 

或者,而不是直接重寫images_upload_handler,是有一個函數或事件,我可以掛接到圖像上滴下後編輯器,但在images_upload_handler觸發之前?

編輯:

我試圖動態地設置images_upload_url在init_instance_callback事件作爲所以不同的方法:

images_upload_url: 'handler.php', 
init_instance_callback : function(ed) { 
    ed.settings.images_upload_url += '?foo=bar'; 
    console.log('changed images_upload_url to: ' + ed.settings.images_upload_url); 
} 

在實際的console.log輸出改變「handler.php這種情況下? foo = bar',但是它實際上傳了一個圖片,它回到了handler.php - 看起來它沒有被正確改變?

回答

0

正如您所看到的,編輯器初始化後您無法修改設置...您嘗試使用init_instance_callback失敗,因爲編輯器初始化後無法更改該值。

我會做的是嘗試注入需要作爲JavaScript變量追加的數據,然後讓實際的init對象使用該變量。例如:

var urlParams = <?php echo $urlParamsAsAString ?> 
tinyMCE.init({ 
    selector: 'textarea', 
    images_upload_url: 'handler.php' + urlParams, 
    . 
    . 
    . 
}) 

這個例子假設你正在使用PHP和有一個名爲$ urlParamsAsAString變量,它包含您需要(例如'?foo=bar')的字符串。你當然可以用任何服務器端語言來做同樣的事情。

這允許每個頁面加載來確定什麼是正確的參數,只要該變量是在您初始化TinyMCE時定義的,它們將被正確地附加。

編輯/注意:如果您使用的單頁應用程序在每次頁面重新加載時都沒有加載init,則每次需要更改配置詳細信息時,需要編輯remove()init()

+0

謝謝。我確實嘗試了這種方法,但是我的應用程序是單頁應用程序。每個屏幕加載/更改由js控制,並且初始init在應用程序的第一個php頁面加載時僅觸發一次(僅出現一次)。所以當嘗試這種方法時,它會在第一次加載時正確加載變量,但隨着每個javascript屏幕更改,它不會更新js端更改的新動態變量。 這是出於性能原因而完成的,因此init不需要在每個頁面更改時調用。 – Manachi

+0

在這種情況下,您每次需要更改此值時都需要刪除並重新初始化編輯器。 –

+0

我曾希望避免這種情況,但最終以這種方式結束了,並且每次換頁時都重新編輯了編輯器,至今似乎工作正常。 我已經勾選了答案,即使技術上這是你跟進的評論,我去了。但是你的回答也有助於確認設置在初始化後無法改變,這阻止了我用那個頭撞牆。感謝您的幫助:) – Manachi