Метод контроллера для создания файла экспорта |
Итак, у нас имеются все данные для файла экспорта. Поэтому осталось лишь создать этот файл и отправить его браузеру. И делается это в методе protected function exportReport($data) { В первых двух строках кода данного метода используется функция header () языка РНР для отправки необработанного HTTP-заголовка браузеру, т.е. в таком формате, как показано выше. В первой строке кода браузер уведомляется о том, что ему посылается текстовый файл формата CSV, а во второй строке — о том, что файл subscriptions. csv посылается как вложение. В зависимости от настроек браузера пользователь может открыть или сохранить этот файл в формате CSV. Затем в данном методе используется функция fopen () языка РНР для открытия объекта файла, в который можно записывать данные. Эта функция принимает два аргумента. В качестве первого из них указывается имя файла. В данном случае указано специальное имя php: //output, позволяющее выводить результат в буфер. Оно выбрано потому, что имя файла уже указано в HTTP-заголовке. А в качестве второго аргумента данной функции указывается режим вывода данных. В данном случае указан режим "w", обозначающий поток только для записи данных. Данная функция вызывается в условном выражении оператора if, чтобы не производить никаких других операций с файлом, если по какой-нибудь причине выполнение функции fopen () завершится неудачно. В кодовом блоке условного оператора if проверяется наличие каких-нибудь данных в первом элементе массива. Если такие данные имеются, то вызывается функция fputcsv () языка РНР для записи ключей массива в виде заголовков столбцов отчета в файле формата CSV. Функция fputcsv () делает все необходимое для преобразования исходных данных в текст формата CSV, для чего используется объект Обратите внимание на то, что для преобразования объекта в массив вызывается метод Как только будет сформирована первая строка отчета, выполняется цикл fоreach, в котором происходит поочередное обращение ко всем элементам массива и запись строки в файл отчета по каждому элементу. И в этом случае вызывается метод fromObject () для преобразования объекта в массив, прежде чем передавать его функции f putcsv (), а в качестве первого аргумента ей передается все тот же объект $fр. И наконец, метод fclose () вызывается для закрытия файлового буфера. Затем вызывается функция close () языка РНР для объекта приложения Joomla ($fp). На этом цикл запроса завершается, и файл отчета отправляется браузеру.
Понравился материал? Пригодилась информация? Плюсани в социалки!
|
Похожие новости | |