src/EventSubscriber/TradeTrackerSubscriber.php line 47

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Entity\Booking;
  4. use App\Service\Basket;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\Session\Flash\FlashBagInterface;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. use Twig\Environment;
  10. class TradeTrackerSubscriber implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var EntityManagerInterface
  14.      */
  15.     protected $entityManager;
  16.     /**
  17.      * @var Environment
  18.      */
  19.     protected $twig;
  20.     /**
  21.      * @var FlashBagInterface
  22.      */
  23.     protected $flashBag;
  24.     /**
  25.      * @var Basket
  26.      */
  27.     protected $basket;
  28.     public function __construct(
  29.         EntityManagerInterface $entityManager,
  30.         Environment $twig,
  31.         FlashBagInterface $flashBag,
  32.         Basket $basket,
  33.     ) {
  34.         $this->entityManager $entityManager;
  35.         $this->twig $twig;
  36.         $this->flashBag $flashBag;
  37.         $this->basket $basket;
  38.     }
  39.     public function onRequest(RequestEvent $event)
  40.     {
  41.         $request $event->getRequest();
  42.         if ('boeking_bedankt' !== $request->get('_route') || !$request->query->has('booking_id')) {
  43.             return;
  44.         }
  45.         $bookingId $request->get('booking_id');
  46.         if (!$booking $this->entityManager->find(Booking::class, $bookingId)) {
  47.             return;
  48.         }
  49.         $tradeTrackerScript $this->twig->render(
  50.             'scripts/tradetracker.html.twig',
  51.             [
  52.                 'booking' => $booking,
  53.             ]
  54.         );
  55.         $this->flashBag->add('trade_tracker_script'$tradeTrackerScript);
  56.     }
  57.     public static function getSubscribedEvents()
  58.     {
  59.         return [
  60.             'kernel.request' => 'onRequest',
  61.         ];
  62.     }
  63. }