Прежде чем читать дальше, я хотел бы извиниться, если сделаю дубликат здесь. Я довольно долго оглядывался по сторонам, и мне не повезло, как справиться со следующей ситуацией. Все ухудшается из-за того, что я начинающий программист.
Ситуация
Я получил задание от моего старшего программиста на работе, чтобы создать функцию, которая бы создать файл CSV. У меня были некоторые проблемы, но, наконец, удалось. Функция (расположенная в модели) выглядит следующим образом.
// The function below will return a CSV file.
public function convert2CSV(){
$data = $this->search()->rawData;
$fileOpener = fopen('php://output', 'w');
fputcsv($fileOpener, array(
'some code...'
), ';');
foreach ($data as $rows) {
fputcsv($fileOpener, $rows ';');
}
fclose($fileOpener);
}
Пока все хорошо. Теперь у меня есть задача создать фильтр, который будет применяться и к CSV-файлу. Что я имею в виду под этим? Хорошо, когда я использую фильтр на веб-сайте, а затем экспортирую файл CSV, он должен только загрузить результаты фильтра. До сих пор, независимо от того, что я делал, он просто загружал все, что мог, до максимального значения.
Я пытался сделать это, используя $ _GET, чтобы как-то сказать приведенной выше функции CSV только для загрузки отфильтрованные результаты. Я пытался сделать это так в контроллере, в рамках действия, которое вызывает функцию CSV модели.
public function actionExport2CSV() {
$a = new A();
$b = new B();
// This part will output the headers so that the file is downloaded rather than displayed
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=TestFile.csv');
// do not cache the file
header('Pragma: no-cache');
header('Expires: 0');
$a->convert2CSV(); {
if (isset($_GET['B'])) {
$b->attributes = $_GET['B'];
}
}
}
}
Я ценю любую помощь и / или объяснение, которое вы можете мне дать. Я, конечно, предпочел бы понять, что я делаю неправильно, чтобы узнать больше и стать лучшим программистом в будущем.
Большое спасибо за вашу помощь, ребята.
С уважением.