lib/composer/LisaBundle/src/VisualMedia/LisaBundle/EventSubscriber/BeforeActionsSubscriber.php line 37

Open in your IDE?
  1. <?php
  2. /**
  3.  * BeforeActionsSubscriber
  4.  *
  5.  * @author Bertin van den Ham <b.vandenham@visualmedia.nl>
  6.  */
  7. namespace VisualMedia\LisaBundle\EventSubscriber;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. use Symfony\Component\HttpKernel\Event\ControllerEvent;
  10. use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
  11. use Symfony\Component\HttpKernel\KernelEvents;
  12. /**
  13.  * Class BeforeActionsSubscriber
  14.  */
  15. class BeforeActionsSubscriber implements EventSubscriberInterface
  16. {
  17.     /**
  18.      * {@inheritdoc}
  19.      */
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return array(
  23.             KernelEvents::CONTROLLER => 'controller',
  24.         );
  25.     }
  26.     /**
  27.      * Controller
  28.      *
  29.      * @param FilterControllerEvent $event
  30.      *
  31.      * @return void
  32.      */
  33.     public function controller(ControllerEvent $event): void
  34.     {
  35.         $this->defaults($event);
  36.         $this->convertJsonToArray($event);
  37.     }
  38.     /**
  39.      * Defaults
  40.      *
  41.      * @param FilterControllerEvent $event
  42.      *
  43.      * @return void
  44.      */
  45.     public function defaults(ControllerEvent $event): void
  46.     {
  47.         $request $event->getRequest();
  48.         $content $request->getContent();
  49.         // Remove underscore query parameter when disabling cache in jQuery Ajax request.
  50.         if ($request->isXmlHttpRequest()) {
  51.             $request->query->remove('_');
  52.         }
  53.     }
  54.     /**
  55.      * Convert Json To Array
  56.      *
  57.      * @param FilterControllerEvent $event
  58.      *
  59.      * @return void
  60.      */
  61.     public function convertJsonToArray(ControllerEvent $event): void
  62.     {
  63.         $request $event->getRequest();
  64.         $content $request->getContent();
  65.         if ($request->getContentType() !== 'json' || !$content) {
  66.             return;
  67.         }
  68.         $data json_decode($contenttrue);
  69.         if (json_last_error() !== JSON_ERROR_NONE) {
  70.             throw new BadRequestHttpException('invalid json body: ' json_last_error_msg());
  71.         }
  72.         $request->request->replace(is_array($data) ? $data : array());
  73.     }
  74. }