app/Plugin/EccubePaymentLite4/EventListener/EventSubscriber/Front/Shopping/SetNotFoundResponseEventSubscriber.php line 32

Open in your IDE?
  1. <?php
  2. namespace Plugin\EccubePaymentLite4\EventListener\EventSubscriber\Front\Shopping;
  3. use Eccube\Entity\Master\SaleType;
  4. use Eccube\Entity\OrderItem;
  5. use Eccube\Event\TemplateEvent;
  6. use Eccube\Repository\Master\SaleTypeRepository;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  9. class SetNotFoundResponseEventSubscriber implements EventSubscriberInterface
  10. {
  11.     /**
  12.      * @var SaleTypeRepository
  13.      */
  14.     private $saleTypeRepository;
  15.     public function __construct(
  16.         SaleTypeRepository $saleTypeRepository
  17.     ) {
  18.         $this->saleTypeRepository $saleTypeRepository;
  19.     }
  20.     public static function getSubscribedEvents()
  21.     {
  22.         return [
  23.             'Shopping/shipping_multiple.twig' => 'index',
  24.         ];
  25.     }
  26.     public function index(TemplateEvent $templateEvent)
  27.     {
  28.         /** @var OrderItem[] $OrderItems */
  29.         $OrderItems $templateEvent->getParameter('OrderItems');
  30.         foreach ($OrderItems as $OrderItem) {
  31.             /** @var SaleType $SaleType */
  32.             $SaleType $OrderItem
  33.                 ->getShipping()
  34.                 ->getDelivery()
  35.                 ->getSaleType();
  36.             if ($SaleType->getName() === '定期商品') {
  37.                 throw new NotFoundHttpException();
  38.             }
  39.         }
  40.     }
  41. }