我写了一个运行良好的Joomla组件。我现在想要在管理列表视图中添加一个按钮,当单击时会自动启动仅下载列表中所选项目的CSV下载。
我对模型逻辑没问题,我得到的问题是传递选定的cid或在没有模板的情况下显示原始输出。
如果我使用JToolBar的appendButton
函数添加'链接'类型按钮,那么我可以将用户发送到'format = raw'的URL,但我无法发送有关检查了哪些项目的信息
如果我使用JToolBarHelper::custom
添加自定义列表按钮,那么我可以发送有关已选中哪些按钮的信息,但我无法发送format=raw
据我所知,有两种解决方案,但我不知道如何实现其中任何一种。选项一是强制无模板原始输出,而不使用format=raw
的URL参数。选项二是在管理表单中设置隐藏变量format=raw
。
任何帮助将不胜感激
答案 0 :(得分:0)
我已经解决了这个问题:
我将此隐藏字段添加到管理表单
<input type="hidden" name="format" value="html" />
然后使用
覆盖JToolbarButtonStandard
的{{1}}
_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
。
如果有人有更好的想法,我不打算将其标记为已解决