【问题标题】:Joomla Insert Media form element via ajaxJoomla 通过 ajax 插入媒体表单元素
【发布时间】: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()-&gt;addScriptDeclarationmodal 行为向文档添加了脚本声明。这使得异步加载它相当有问题。为什么不加载媒体字段并在需要时隐藏它?或者您希望其中几个按需加载,并且在生成页面时不知道所需字段的数量?
  • 不幸的是,这是一个不知道所需字段数量的情况。本质上,我有可以创建并应用于主模型的自定义字段,这些字段仅在用户指定要加载的自定义字段“组”时加载,因此我无法确定有多少。我的后备方案是在我自己的图像字段中创建 html,但这意味着它不会自动更新为新版本的 joomla。

标签: joomla joomla3.0


【解决方案1】:

K2 有一个扩展名为 JW ALL VIDEOS 的视频。它是免费的,我建议您下载它并看看它是如何完成的以用于学习目的:

http://www.joomlaworks.net/extensions/free-premium/allvideos

【讨论】:

  • 感谢您的建议,我已经完成了扩展,但它似乎没有做我正在尝试的事情。它是一个内容插件,而不是一个组件,它没有任何 ajax 调用来将媒体元素拉入表单。
【解决方案2】:

我设法弄清楚如何添加媒体元素。这不是完全相同的输入选择,所以我构建了自己的输入选择,为了调用图像选择器,我可以通过使用这个函数的 javascript 调用它来做到这一点:

SqueezeBox.open('index.php?option=com_media&view=images&tmpl=component&asset=com_mycomponent&author=&fieldid=gallery_result' + field_id + '&folder=gallery',
            {
                size:
                        {
                            x: 800,
                            y: 500
                        },
                handler: 'iframe'
            }
    )

仍然不是我想要的完美,但足够接近。

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多