app/Plugin/AddOnForCategory42/EventSubscriber/Controller/ProductControllerSubscriber.php line 43

Open in your IDE?
  1. <?php
  2. namespace Plugin\AddOnForCategory42\EventSubscriber\Controller;
  3. use Symfony\Component\DependencyInjection\ContainerInterface;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\Form\FormFactoryInterface;
  6. use Eccube\Event\TemplateEvent;
  7. use Eccube\Event\EventArgs;
  8. use Eccube\Event\EccubeEvents;
  9. use Eccube\Repository\CategoryRepository;
  10. use Plugin\AddOnForCategory42\Repository\AddOnForCategoryRepository;
  11. class ProductControllerSubscriber implements EventSubscriberInterface
  12. {
  13.     private $categoryRepository;
  14.     private $addOnForCategoryRepository;
  15.     /**
  16.      * ProductRepository constructor.
  17.      *
  18.      * @param CategoryRepository $categoryRepository
  19.      * @param AddOnForCategoryRepository $addOnForCategoryRepository
  20.      */
  21.     public function __construct(
  22.         CategoryRepository $categoryRepository,
  23.         AddOnForCategoryRepository $addOnForCategoryRepository
  24.     ) {
  25.         $this->categoryRepository $categoryRepository;
  26.         $this->addOnForCategoryRepository $addOnForCategoryRepository;
  27.     }
  28.     /**
  29.      * @return array
  30.      */
  31.     public static function getSubscribedEvents()
  32.     {
  33.         return [
  34.             EccubeEvents::FRONT_PRODUCT_INDEX_SEARCH => 'FrontProductIndexSearch',
  35.         ];
  36.     }
  37.     public function FrontProductIndexSearch(EventArgs $event)
  38.     {
  39.         $qb $event->getArgument('qb');
  40.         $searchData $event->getArgument('searchData');
  41.         if ($searchData['category_id']) {
  42.             $Category $this->categoryRepository->find($searchData['category_id']);
  43.             $AddOnForCategory $this->addOnForCategoryRepository->findOneBy(['Category' => $Category]);
  44.             if($AddOnForCategory){
  45.                 $qb
  46.                     ->leftJoin('c.AddOnForCategory''a')
  47.                     ->andWhere('a.private_flg != true');
  48.             }
  49.         } else {
  50.             $qb
  51.                 ->leftJoin('p.ProductCategories''pct')
  52.                 ->leftJoin('pct.Category''c')
  53.                 ->leftJoin('c.AddOnForCategory''a')
  54.                 ->andWhere('a.private_flg != true');
  55.         }
  56.     }
  57. }