src/Sulu/Component/Rest/Csv/CsvHandler.php
public function createResponse(ViewHandler $handler, View $view, Request $request, $format)
    {
        if (!$view->getData() instanceof ListRepresentation) {
            throw new ObjectNotSupportedException($view);
        }

        $viewData = $view->getData();
        $data = new CallbackCollection($viewData->getData(), [$this, 'prepareData']);
        $fileName = sprintf('%s.csv', $viewData->getRel());

        $config = new ExporterConfig();
        $exporter = new Exporter($config);

        $data->rewind();
        if ($row = $data->current()) {
            $config->setColumnHeaders(array_keys($row));
        }

        $config->setDelimiter($this->convertValue($request->get('delimiter', ';'), self::$delimiterMap));
        $config->setNewline($this->convertValue($request->get('newLine', '\\n'), self::$newLineMap));
        $config->setEnclosure($request->get('enclosure', '"'));
        $config->setEscape($request->get('escape', '\\'));

        $response = new StreamedResponse();
        $disposition = $response->headers->makeDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
            $fileName,
            $fileName
        );
        $response->headers->set('Content-Type', 'text/csv');
        $response->headers->set('Content-Disposition', $disposition);
        $response->setCallback(
            function() use ($data, $exporter) {
                $exporter->export('php://output', $data);
            }
        );
        $response->send();

        return $response;
    }
public function createResponse(ViewHandler $handler, View $view, Request $request, $format)
    {
        if (!$view->getData() instanceof ListRepresentation) {
            throw new ObjectNotSupportedException($view);
        }

        $viewData = $view->getData();
        $data = new CallbackCollection($viewData->getData(), [$this, 'prepareData']);
        $fileName = sprintf('%s.csv', $viewData->getRel());

        $config = new ExporterConfig();
        $exporter = new Exporter($config);

        $data->rewind();
        if ($row = $data->current()) {
            $config->setColumnHeaders(array_keys($row));
        }

        $config->setDelimiter($this->convertValue($request->get('delimiter', ';'), self::$delimiterMap));
        $config->setNewline($this->convertValue($request->get('newLine', '\\n'), self::$newLineMap));
        $config->setEnclosure($request->get('enclosure', '"'));
        $config->setEscape($request->get('escape', '\\'));

        $response = new StreamedResponse();
        $disposition = $response->headers->makeDisposition(
            ResponseHeaderBag::DISPOSITION_ATTACHMENT,
            $fileName,
            $fileName
        );
        $response->headers->set('Content-Type', 'text/csv');
        $response->headers->set('Content-Disposition', $disposition);
        $response->setCallback(
            function() use ($data, $exporter) {
                $exporter->export('php://output', $data);
            }
        );
        $response->send();

        return $response;
    }
public function createResponse ( ViewHandler $ handler , View $ view , Request $ request , $ format ) { if ( ! $ view -> getData ( ) instanceof ListRepresentation ) { throw new ObjectNotSupportedException ( $ view ) ; } $ viewData = $ view -> getData ( ) ; $ data = new CallbackCollection ( $ viewData -> getData ( ) , [ $ this , 'prepareData' ] ) ; $ fileName = sprintf ( '%s.csv' , $ viewData -> getRel ( ) ) ; $ config = new ExporterConfig ( ) ; $ exporter = new Exporter ( $ config ) ; $ data -> rewind ( ) ; if ( $ row = $ data -> current ( ) ) { $ config -> setColumnHeaders ( array_keys ( $ row ) ) ; } $ config -> setDelimiter ( $ this -> convertValue ( $ request -> get ( 'delimiter' , ';' ) , self :: $ delimiterMap ) ) ; $ config -> setNewline ( $ this -> convertValue ( $ request -> get ( 'newLine' , '\\n' ) , self :: $ newLineMap ) ) ; $ config -> setEnclosure ( $ request -> get ( 'enclosure' , '"' ) ) ; $ config -> setEscape ( $ request -> get ( 'escape' , '\\' ) ) ; $ response = new StreamedResponse ( ) ; $ disposition = $ response -> headers -> makeDisposition ( ResponseHeaderBag :: DISPOSITION_ATTACHMENT , $ fileName , $ fileName ) ; $ response -> headers -> set ( 'Content-Type' , 'text/csv' ) ; $ response -> headers -> set ( 'Content-Disposition' , $ disposition ) ; $ response -> setCallback ( function ( ) use ( $ data , $ exporter ) { $ exporter -> export ( 'php://output' , $ data ) ; } ) ; $ response -> send ( ) ; return $ response ; }
Handles response for csv-request.

@param ViewHandler $handler
@param View $view
@param Request $request
@param string $format

@return Response

@throws ObjectNotSupportedException
Handles response for csv - request .