Прежде чем вы читаете дальше, я хотел бы извиниться, если я делаю дубликат здесь. Я уже давно оглядываюсь, и мне не повезло, как справиться со следующей ситуацией. Все становится еще хуже из-за того, что я начинающий программист.
Ситуация
Я получил задание от моего старшего программиста на работе создать функцию, которая будет генерировать 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'];
}
}
}
}
Я ценю любую помощь и / или объяснение, которое вы можете мне дать. Я, конечно, предпочел бы понять, что я делаю неправильно, чтобы узнать больше и стать лучшим программистом в будущем.
Большое спасибо за вашу помощь, ребята.
С уважением.