diff --git a/Controller/ExportController.php b/Controller/ExportController.php index e4a6f3a..dce2f76 100644 --- a/Controller/ExportController.php +++ b/Controller/ExportController.php @@ -47,7 +47,7 @@ public function __construct(EventDispatcherInterface $eventDispatcher, ExporterI * * @return Response */ - public function exportAction($alias) + public function exportAction($alias): Response { $class = $this->container->getParameter(sprintf('avro_csv.objects.%s.class', $alias)); @@ -55,11 +55,11 @@ public function exportAction($alias) $this->eventDispatcher->dispatch(AvroCsvEvents::EXPORT, new ExportEvent($this->exporter)); - $content = $this->exporter->getContent(); + $exportedEvent = new ExportedEvent($this->exporter->getContent()); - $this->eventDispatcher->dispatch(AvroCsvEvents::EXPORTED, new ExportedEvent($content)); + $this->eventDispatcher->dispatch(AvroCsvEvents::EXPORTED, $exportedEvent); - $response = new Response($content); + $response = new Response($exportedEvent->getContent()); $response->headers->set('Content-Type', 'application/csv'); $response->headers->set('Content-Disposition', sprintf('attachment; filename="%s.csv"', $alias)); diff --git a/Controller/ImportController.php b/Controller/ImportController.php index 63553cd..b83dcb7 100644 --- a/Controller/ImportController.php +++ b/Controller/ImportController.php @@ -63,7 +63,7 @@ public function __construct( * * @return Response */ - public function uploadAction($alias) + public function uploadAction($alias): Response { $fieldChoices = $this->fieldRetriever->getFields( $this->container->getParameter(sprintf('avro_csv.objects.%s.class', $alias)), @@ -91,7 +91,7 @@ public function uploadAction($alias) * * @return Response */ - public function mappingAction(Request $request, $alias) + public function mappingAction(Request $request, $alias): Response { $fieldChoices = $this->fieldRetriever->getFields( $this->container->getParameter(sprintf('avro_csv.objects.%s.class', $alias)), @@ -156,7 +156,7 @@ public function mappingAction(Request $request, $alias) * * @return Response */ - public function processAction(Request $request, $alias) + public function processAction(Request $request, $alias): Response { $fieldChoices = $this->fieldRetriever->getFields( $this->container->getParameter(sprintf('avro_csv.objects.%s.class', $alias)), diff --git a/Event/ExportedEvent.php b/Event/ExportedEvent.php index 8ca7acf..9fe6cc8 100644 --- a/Event/ExportedEvent.php +++ b/Event/ExportedEvent.php @@ -35,4 +35,14 @@ public function getContent(): string { return $this->content; } + + /** + * Set the csv data. + * + * @param string $content + */ + public function setContent(string $content): void + { + $this->content = $content; + } } diff --git a/README.md b/README.md index 823f17d..738b5d2 100644 --- a/README.md +++ b/README.md @@ -264,6 +264,9 @@ This bundle provides some simple exporting functionality. Navigating to "/export/your-alias" will export all of your data to a csv and allow you to download it from the browser. +You can customize the export query builder and the exported data by listening to the +corresponding events (See ``Avro\CsvBundle\AvroCsvEvents``). + If you want to customize data returned, just create your own controller action and grab the queryBuilder from the exporter and add your constraints before calling "getContent()". @@ -281,12 +284,12 @@ class ExportController extends AbstractController /** * Export a db table. * - * @param ExporterInterface $alias The exporter - * @param string $alias The objects alias + * @param ExporterInterface $exporter The exporter + * @param string $alias The objects alias * * @return Response */ - public function exportAction(ExporterInterface $exporter), string $alias): Response + public function exportAction(ExporterInterface $exporter, string $alias): Response { $class = $this->getParameter(sprintf('avro_csv.objects.%s.class', $alias));