简体   繁体   中英

Download raw data in Joomla component

I have written a Joomla component which is working well. I now want to add a button to an admin list view that when clicked automatically starts a CSV download of only the items selected in the list.

I'm OK with the model logic, the problem I've got is passing the selected cids or presenting raw output without the template.

If I use JToolBar's appendButton function to add a 'Link' type button, then I can send the user to a URL with 'format=raw', but I can't send information about which items were checked.

If I use JToolBarHelper::custom to add a custom list button, then I can send the information about which buttons were checked, but I can't send format=raw

As far as I can see there are two solutions, but I don't know how to implement either of them. Option one would be to force templateless raw output without a URL parameter of format=raw . Option two would be to set a hidden variable with format=raw in the admin form.

Any help would be appreciated

I've solved this as follows:

I added this hidden field to the admin form

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

Then subclassed JToolbarButtonStandard overriding the _getCommand with

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;
}

So that when the button was clicked it changed the format parameter from html to raw .

I'm not going to mark this as solved in case anyone has any better ideas

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM