Сброс задачи Joomla Form

Я пытаюсь экспортировать список элементов в файл CSV из стандартного списка в компоненте Joomla. У меня есть простая кнопка экспорта, и она создает файл для загрузки.

Проблема, с которой я столкнулась, заключается в том, что следующая ссылка нажата, она пытается экспортировать данные снова, пока форма не будет обновлена. Я предполагаю, что это потому, что я не перенаправляю на выполнение задачи.

Есть ли способ отменить эту задачу после ее полного без перенаправления? потому что перенаправление приведет к тому, что мой файл не будет загружен.

Это мой код контроллера, который выполняется после создания списка.

protected function exportData($data) {

    // Set Headers
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment;filename='.'shows.csv');

    if($fp = fopen('php://output', 'w')) {
        // Output the first row as column headings
        if($data[0]) {
            fputcsv($fp, array_keys(JArrayHelper::fromObject($data[0])));
        }

        // Output the rows
        foreach ($data as $row) {
            fputcsv($fp, JArrayHelper::fromObject($row));
        }

        // Close the file
        fclose($fp);
    }

    JFactory::getApplication()->close();
}
2 голоса | спросил Lee Wiggins 18 Mayam15 2015, 07:55:53

1 ответ


1

Ваша форма может вызвать функцию, которая выполняет функцию экспорта; дано

<input name='task' value='normaltask'>

, то в скрипте что-то вроде:

function exportCsvButton() {
    document.getElementById('task').value = 'export.csv';
    form.submit();
}

Если вы посмотрите на другие ссылки на странице, они могут вызывать другую функцию, которая не сбрасывает значение task; поэтому после его изменения он остается неизменным.

Просто добавьте инструкцию, перезагружающую задачу, вы можете даже поместить ее в функцию exportCsvButton() после вызова form.submit()

Перенаправление в контроллер не будет работать, JApplication::close() вызывается соответствующим образом, чтобы остановить выполнение после того, как файл был передан.

ответил Riccardo Zorn 27 Mayam15 2015, 00:14:33

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132