PartKeepr\ExportBundle\EventListener\AbstractResponderViewListener::onKernelView PHP Method

onKernelView() public method

Converts the response to an exported format.
public onKernelView ( GetResponseForControllerResultEvent $event ) : Response | mixed
$event Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent
return Symfony\Component\HttpFoundation\Response | mixed
    public function onKernelView(GetResponseForControllerResultEvent $event)
    {
        $controllerResult = $event->getControllerResult();
        if ($controllerResult instanceof Response) {
            return;
        }
        $request = $event->getRequest();
        $format = $request->attributes->get('_api_format');
        if (static::FORMAT !== $format) {
            return;
        }
        switch ($request->getMethod()) {
            case Request::METHOD_POST:
                $status = 201;
                break;
            case Request::METHOD_DELETE:
                $status = 204;
                break;
            default:
                $status = 200;
                break;
        }
        $columns = [];
        if ($event->getRequest()->query->has('columns')) {
            $columns = json_decode($event->getRequest()->query->get('columns'));
        }
        $data = $this->flatten($controllerResult, $columns);
        $file = tempnam(sys_get_temp_dir(), 'partkeepr_export');
        unlink($file);
        $writer = $this->getWriter($file);
        $writer->open();
        foreach ($data as $item) {
            $writer->write($item);
        }
        $writer->close();
        $exportData = file_get_contents($file);
        $event->setResponse(new Response($exportData, $status));
    }
AbstractResponderViewListener