【问题标题】:Download raw data in Joomla component在 Joomla 组件中下载原始数据
【发布时间】:2015-07-17 16:13:00
【问题描述】:

我编写了一个运行良好的 Joomla 组件。我现在想在管理员列表视图中添加一个按钮,单击该按钮后会自动开始仅下载列表中选定项目的 CSV 文件。

我对模型逻辑没问题,我遇到的问题是传递选定的 cid 或在没有模板的情况下呈现原始输出。

如果我使用 JToolBar 的 appendButton 函数添加一个“链接”类型的按钮,那么我可以将用户发送到一个带有“格式=原始”的 URL,但我不能发送有关哪些项目已检查的信息。

如果我使用JToolBarHelper::custom 添加自定义列表按钮,那么我可以发送关于哪些按钮被选中的信息,但我无法发送format=raw

据我所知,有两种解决方案,但我不知道如何实现其中任何一种。选项一是在没有format=raw 的 URL 参数的情况下强制无模板原始输出。选项二是在管理表单中使用format=raw 设置隐藏变量。

任何帮助将不胜感激

【问题讨论】:

  • 看看com_banners是如何做到的。如果您只需要这样做,这是最简单的示例。
  • 我假设您指的是 com_banners 中的曲目视图。这不是我需要的,因为您无法在细粒度级别选择您想要的项目(您只能过滤)。我有一个列表视图,我想允许管理员选择项目并只下载这些项目。还是谢谢。
  • 我认为你需要做的是定义一个文档类型(html,feed,json等的方式,但是你想要的格式。然后就像你构建view.html .php 或 view.feed.php 你构建 view.csv.php 但让它支持过滤器。我认为这不会那么难,因为你有过滤器在状态。
  • 我对 raw 很满意,我认为不需要新的文档类型。问题是除非您在查询字符串中有 format=raw,否则 Joomla 将显示原始视图,但它会将其与整个模板一起封装。

标签: joomla


【解决方案1】:

我已经解决了这个问题:

我将此隐藏字段添加到管理表单中

<input type="hidden" name="format" value="html" />

然后继承 JToolbarButtonStandard 覆盖 _getCommand

protected function _getCommand($name,$task,$list)
{
    JHtml::_('behavior.framework');
    $message = JText::_('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST');
    $message = addslashes($message);

    if ($list)
    {
        $cmd = "if (document.adminForm.boxchecked.value==0){alert('$message');}else{document.getElementById('adminForm').format.value='raw'; Joomla.submitbutton('$task')}";
    }
    else
    {
        $cmd = "document.getElementById('adminForm').format.value='raw'; Joomla.submitbutton('$task')";
    }

    return $cmd;
}

因此,当单击按钮时,它会将 format 参数从 html 更改为 raw

我不会将此标记为已解决,以防有人有更好的想法

【讨论】:

    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2012-12-02
    • 2018-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多