Сброс задачи 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();
}
1 ответ
Ваша форма может вызвать функцию, которая выполняет функцию экспорта; дано
<input name='task' value='normaltask'>
, то в скрипте что-то вроде:
function exportCsvButton() {
document.getElementById('task').value = 'export.csv';
form.submit();
}
Если вы посмотрите на другие ссылки на странице, они могут вызывать другую функцию, которая не сбрасывает значение task
; поэтому после его изменения он остается неизменным.
Просто добавьте инструкцию, перезагружающую задачу, вы можете даже поместить ее в функцию exportCsvButton()
после вызова form.submit()
Перенаправление в контроллер не будет работать, JApplication::close()
вызывается соответствующим образом, чтобы остановить выполнение после того, как файл был передан.