【发布时间】:2013-08-02 13:17:33
【问题描述】:
我正在构建一个自定义的 Joomla 3.0 管理员组件,其中一部分需要一些 ajax 调用来插入各种类型的字段。
我一直无法插入媒体字段。
对于常规输入,我刚刚直接创建了 html。 对于编辑器,我使用了以下代码(我刚刚粘贴了一个摘录):
$editor = JFactory::getEditor();
$html .= $editor->display($name, $value, '100%', '250px', 20, 20, true, $id);
echo $html;
我不希望为 Media 字段重新创建 html 代码,因为有相当数量的 html 和 javascript 可能会在 Joomla 的未来版本中发生变化。有没有类似于我可以使用的 JFactory:getEditor() 的方法?
我也尝试过创建 Media 类的实例,但它需要一个我认为在执行 ajax 调用时无法访问的表单对象(或者至少我不知道如何获取它)。
$xml = '<field
name="test"
type="media"
/>';
$field = new SimpleXMLElement($xml);
$media = new JFormFieldMedia();
$media->setup($field,'');
echo $media->input;
【问题讨论】:
-
在我看来,最大的问题是媒体字段通过
JFactory::getDocument()->addScriptDeclaration和modal行为向文档添加了脚本声明。这使得异步加载它相当有问题。为什么不加载媒体字段并在需要时隐藏它?或者您希望其中几个按需加载,并且在生成页面时不知道所需字段的数量? -
不幸的是,这是一个不知道所需字段数量的情况。本质上,我有可以创建并应用于主模型的自定义字段,这些字段仅在用户指定要加载的自定义字段“组”时加载,因此我无法确定有多少。我的后备方案是在我自己的图像字段中创建 html,但这意味着它不会自动更新为新版本的 joomla。