vendor/oi-layout/arcone/src/EventSubscriber/TabulatorRequestSubscriber.php line 21

Open in your IDE?
  1. <?php
  2. namespace Layout\ArconeBundle\EventSubscriber;
  3. use Layout\ArconeBundle\Controller\Interfaces\TabulatorSerchAndSortInterface;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  6. use Symfony\Component\HttpKernel\KernelEvents;
  7. class TabulatorRequestSubscriber implements EventSubscriberInterface
  8. {
  9.     public static function getSubscribedEvents()
  10.     {
  11.         return [
  12.             KernelEvents::CONTROLLER => [
  13.                 ['onKernelController'0],
  14.             ],
  15.         ];
  16.     }
  17.     public function onKernelController(ControllerEvent $event)
  18.     {
  19.         $controller $event->getController();
  20.         // when a controller class defines multiple action methods, the controller
  21.         // is returned as [$controllerInstance, 'methodName']
  22.         if (is_array($controller)) {
  23.             $controller $controller[0];
  24.         }
  25.         if ($controller instanceof TabulatorSerchAndSortInterface) {
  26.             $formName $event->getRequest()->query->get('form_name');
  27.             $filters $event->getRequest()->query->get('filters');
  28.             $sorters $event->getRequest()->query->get('sorters');
  29.             $formData = [];
  30.             if (is_array($filters)) {
  31.                 foreach ($filters as $filter) {
  32.                     $formData[$filter['field']] = $filter['value'];
  33.                 }
  34.             }
  35.             if (is_array($sorters)) {
  36.                 $sortBy = [];
  37.                 $sortMode = [];
  38.                 foreach ($sorters as $sorter) {
  39.                     $sortBy[] = $sorter['field'];
  40.                     $sortMode[] = $sorter['dir'];
  41.                 }
  42.                 $formData['sortBy'] = implode(','$sortBy);
  43.                 $formData['sortMode'] = implode(','$sortMode);
  44.             }
  45.             if(!empty($formData)) {
  46.                 $event->getRequest()->query->set($formName$formData);
  47.             }
  48.         }
  49.     }
  50. }