CSV содержит HTML при экспорте этого файла в CakePHP - PullRequest
0 голосов
/ 01 февраля 2012

Я пытаюсь выполнить функции экспорта и импорта файла CSV. Я успешно импортировал файл, но при экспорте загруженный файл CSV содержит HTML-код с заголовком, телом и нижним колонтитулом. Я думаю, что это было от default.ctp, не уверен.

Почему и откуда этот код автоматически внедряется?

<?php function export()
    {
            $fp = NULL;
            $results = NULL;
            $row = NULL;        
            $results = $this->Order->find('all',array('fields'=> array('Order.sku','Order.inventory')));
            $fp = fopen('php://output','w+');
            $filename = "results.csv"; 
            header('Content-type: application/csv');
            header('Content-Disposition: attachment;');
            fputcsv($fp,array(
            'sku',
            'inventory'
            ));
            $ctr = count($results);
            print($ctr);
            foreach($results as $row) 
            {
                fputcsv($fp,array(
                $row['Order']['sku'],
                $row['Order']['inventory']
                ));
            }
          fclose($fp);

    } ?>

Ответы [ 3 ]

1 голос
/ 01 февраля 2012

Это простое решение, либо создайте компоновку CSV, содержащую необходимые заголовки, либо просто используйте встроенную компоновку ajax:

$this->layout = 'ajax';

В действии вашего контроллера.Это должно исправить это для вас.

1 голос
/ 01 февраля 2012

Вам нужно отключить рендеринг макета, воткните это в действие вашего контроллера:

$this->autoRender = false;

Технически, это не правильный способ сделать CSV, вы должны создать макет и представление CSV, но если этоработает, ce le vie.

0 голосов
/ 02 февраля 2012

Отключить макет в контроллере

<?php

$this->layout=null;

?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...