share(function () { $config = new ExporterConfig(); return $config ->setDelimiter(";") ->setEnclosure('"') ->setEscape("\\") ->setToCharset('UTF-8') ->setFromCharset('UTF-8'); }); $app['csv.exporter'] = $app->share(function ($app) { return new Exporter($app['csv.exporter.config']); }); $app['csv.lexer.config'] = $app->share(function ($app) { $lexer = new LexerConfig(); $lexer->setDelimiter(';') ->setEnclosure('"') ->setEscape("\\") ->setToCharset('UTF-8') ->setFromCharset('UTF-8'); return $lexer; }); $app['csv.lexer'] = $app->share(function ($app) { return new Lexer($app['csv.lexer.config']); }); $app['csv.interpreter'] = $app->share(function ($app) { return new Interpreter(); }); $app['csv.response'] = $app->protect(function ($callback) use ($app) { // set headers to fix ie issues $response = new StreamedResponse($callback, 200, [ 'Expires' => 'Mon, 26 Jul 1997 05:00:00 GMT', 'Last-Modified' => gmdate('D, d M Y H:i:s'). ' GMT', 'Cache-Control' => 'no-store, no-cache, must-revalidate', 'Cache-Control' => 'post-check=0, pre-check=0', 'Pragma' => 'no-cache', 'Content-Type' => 'text/csv', 'Cache-Control' => 'max-age=3600, must-revalidate', 'Content-Disposition' => 'max-age=3600, must-revalidate', ]); $response->headers->set('Content-Disposition', $response->headers->makeDisposition( ResponseHeaderBag::DISPOSITION_ATTACHMENT, 'export.csv' )); }); } public function boot(Application $app) { } }