src/Exporter/Exporter.php line 18

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Exporter;
  4. use Sonata\Exporter\Handler;
  5. use Sonata\Exporter\Source\SourceIteratorInterface;
  6. use Sonata\Exporter\Writer\CsvWriter;
  7. use Sonata\Exporter\Writer\JsonWriter;
  8. use Sonata\Exporter\Writer\XlsWriter;
  9. use Sonata\Exporter\Writer\XmlWriter;
  10. use Symfony\Component\HttpFoundation\StreamedResponse;
  11. @trigger_error(
  12.     'The '.__NAMESPACE__.'\Exporter class is deprecated since version 3.1 and will be removed in 4.0.'.
  13.     ' Use Sonata\Exporter\Exporter instead',
  14.     E_USER_DEPRECATED
  15. );
  16. /**
  17.  * NEXT_MAJOR: remove this class, and the dev dependency.
  18.  */
  19. class Exporter
  20. {
  21.     /**
  22.      * @param string $format
  23.      * @param string $filename
  24.      *
  25.      * @throws \RuntimeException
  26.      *
  27.      * @return StreamedResponse
  28.      */
  29.     public function getResponse($format$filenameSourceIteratorInterface $source)
  30.     {
  31.         switch ($format) {
  32.             case 'xls':
  33.                 $writer = new XlsWriter('php://output');
  34.                 $contentType 'application/vnd.ms-excel';
  35.                 break;
  36.             case 'xml':
  37.                 $writer = new XmlWriter('php://output');
  38.                 $contentType 'text/xml';
  39.                 break;
  40.             case 'json':
  41.                 $writer = new JsonWriter('php://output');
  42.                 $contentType 'application/json';
  43.                 break;
  44.             case 'csv':
  45.                 $writer = new CsvWriter('php://output'',''"''\\'truetrue);
  46.                 $contentType 'text/csv';
  47.             case 'html':
  48.                 $writer = new HtmlWriter('php://output');
  49.                 $contentType 'text/html';
  50.                 break;
  51.                 break;
  52.             default:
  53.                 throw new \RuntimeException('Invalid format');
  54.         }
  55.         $callback = static function () use ($source$writer) {
  56.             $handler Handler::create($source$writer);
  57.             $handler->export();
  58.         };
  59.         return new StreamedResponse($callback200, [
  60.             'Content-Type' => $contentType,
  61.             'Content-Disposition' => sprintf('attachment; filename="%s"'$filename),
  62.         ]);
  63.     }
  64. }