TinyMCE 图片上传覆盖 images_upload_handler

TinyMCE image uploading overriding images_upload_handler

我的 TinyMCE 和拖放图片上传功能运行良好。我已经指定 images_upload_url: 'handler.php' 并编写了接收数据并适当处理数据的处理程序。

但是,在将图像拖放到页面上时,我想从客户端动态传递一个额外的参数给 handler.php。

我在文档中看到您可以通过编写自己的 images_upload_handler 函数来 "roll your own" 发挥作用。这就足够了,但是为了简单起见,我宁愿使用现有的 TinyMCE。我想知道有没有一种方法可以动态更改 images_upload_url 以在默认 images_upload_handler 函数运行之前动态附加 GET 参数(例如?foo=bar)?或者有没有一种方法可以为 images_upload_handler 指定我自己的函数,然后直接调用默认的 'parent' TinyMCE 函数?我在想这样的事情(就像 mockup/idea):

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 触发之前,是否有我可以挂钩的函数或事件?

编辑:

我尝试了一种不同的方法,在 init_instance_callback 事件中动态设置 images_upload_url,如下所示:

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 - 似乎没有正确更改?

如您所见,编辑器初始化后无法修改设置...您尝试使用 init_instance_callback 失败,因为编辑器初始化后无法更改值。

我会做的是尝试注入您需要附加的数据作为 JavaScript 变量,然后让实际的初始化对象使用该变量。例如:

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

此示例假定您使用的是 PHP 并具有名为 $urlParamsAsAString 的变量,其中包含您需要的字符串(例如 '?foo=bar')。您当然可以对任何服务器端语言执行相同的操作。

这允许每个页面加载确定正确的参数是什么,只要在您初始化 TinyMCE 时定义了该变量,它们就会被正确附加。

EDIT/NOTE:如果您使用的是单页应用程序,您不会在每次重新加载页面时加载 init,则您将需要 remove()init() 编辑器您想要更改配置详细信息的时间。