<?php declare(strict_types=1);
namespace App\EventListener;
use Symfony\Component\HttpKernel\Event\ControllerEvent;
class FilterParamConverter
{
public function onKernelController(ControllerEvent $event)
{
$request = $event->getRequest();
if ($request->query->has('filter')) {
$data = $this->parse($request->query->get('filter'));
$request->query->set('filter', $data);
}
if ($request->query->has('order')) {
$data = $this->parse($request->query->get('order'));
$request->query->set('order', $data);
}
}
private function parse($raw): array
{
if (!is_string($raw)) {
return $raw;
}
$json = json_decode($raw, true);
if (false !== $json) {
return $json;
}
return [];
}
}