app/Plugin/CategoryOption/EventSubscriber/CategorySubscriber.php line 64

Open in your IDE?
  1. <?php
  2. namespace Plugin\CategoryOption\EventSubscriber;
  3. use Eccube\Controller\AbstractController;
  4. use Eccube\Event\TemplateEvent;
  5. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  6. use Plugin\CategoryOption\Repository\CategoryOptionRepository;
  7. use Eccube\Event\EccubeEvents;
  8. use Eccube\Event\EventArgs;
  9. use Eccube\Common\EccubeConfig;
  10. use Plugin\CategoryOption\Service\CategoryFileUploader;
  11. use Symfony\Component\Asset\Packages;
  12. class CategorySubscriber extends AbstractController implements EventSubscriberInterface
  13. {
  14.     protected $CategoryOptionRepository;
  15.     protected $eccubeConfig;
  16.     protected $CategoryFileUploader;
  17.     protected $packages;
  18.     public function __construct(
  19.     CategoryOptionRepository $CategoryOptionRepository,
  20.     EccubeConfig $eccubeConfig,
  21.     CategoryFileUploader $CategoryFileUploader,
  22.     Packages $packages
  23.     )
  24.     {
  25.         $this->CategoryOptionRepository $CategoryOptionRepository;
  26.         $this->eccubeConfig $eccubeConfig;
  27.         $this->CategoryFileUploader $CategoryFileUploader;
  28.         $this->packages $packages;
  29.     }
  30.     protected function getCategory($category_id) {
  31.         $Category $this->CategoryOptionRepository->getCategory($category_id);
  32.         if(empty($Category)){
  33.             //無いとき
  34.             $Category $this->CategoryOptionRepository->newCategory($category_id);
  35.         }
  36.         return $Category;
  37.     }
  38.     /**
  39.      * @inheritDoc
  40.      */
  41.     public static function getSubscribedEvents()
  42.     {
  43.         return [
  44.             '@admin/Product/category.twig' => 'onTemplateAdminCategory',
  45.             'Product/list.twig' => 'onTemplateProductList',
  46.              EccubeEvents::ADMIN_PRODUCT_CATEGORY_INDEX_COMPLETE => 'onAdminCategoryEditComplete',
  47.         ];
  48.     }
  49.     public function onTemplateProductList(TemplateEvent $event){
  50.         $CategoryOption "";
  51.         if(isset($event->getParameters()["Category"])){
  52.             $CategoryOption $this->CategoryOptionRepository->getCategory($event->getParameters()["Category"]->getId());
  53.         }
  54.         $event->setParameter('CategoryOption'$CategoryOption);
  55.     }
  56.     public function onTemplateAdminCategory(TemplateEvent $event)
  57.     {
  58.         $event->addSnippet('@CategoryOption/admin/Category/category_option.twig');
  59.     }
  60.     
  61.     public function onAdminCategoryEditComplete(EventArgs $event){
  62.         $form $event->getArgument('form');
  63.         if(empty($form->get("name")->getData())){
  64.             //更新時
  65.             $editForm $event->getArgument('editForm');
  66.             $CategoryOption $this->getCategory($event->getArgument('TargetCategory')->getId());
  67.             foreach($editForm as $f){
  68.                 if(!in_array($f->getName(),["img","description"],true)){
  69.                     continue;
  70.                 }
  71.                 if($f->getName() === "img"){
  72.                     if(empty($editForm->get("hidden_".$f->getName())->getData())){
  73.                         //隠しパラメータ
  74.                         $CategoryOption->setImg("");
  75.                     }
  76.                     if(!empty($f->getData())){
  77.                         $filename $this->CategoryFileUploader->upload($f->getData());
  78.                         $CategoryOption->setImg($filename);
  79.                     }
  80.                 }elseif($f->getName() === "description"){
  81.                     $CategoryOption->setDescription($f->getData());
  82.                 }
  83.             }
  84.         }else{
  85.             $CategoryOption $this->getCategory($event->getArgument('TargetCategory')->getId());
  86.             foreach($form as $f){
  87.                 if(!in_array($f->getName(),["img","description"],true)){
  88.                     continue;
  89.                 }
  90.                 if($f->getName() === "img"){
  91.                     if(empty($form->get("hidden_".$f->getName())->getData())){
  92.                         //隠しパラメータ
  93.                         $CategoryOption->setImg("");
  94.                     }
  95.                     if(!empty($f->getData())){
  96.                         $filename $this->CategoryFileUploader->upload($f->getData());
  97.                         $CategoryOption->setImg($filename);
  98.                     }
  99.                 }elseif($f->getName() === "description"){
  100.                     $CategoryOption->setDescription($f->getData());
  101.                 }
  102.             }
  103.         }
  104.         $this->entityManager->persist($CategoryOption);
  105.         $this->entityManager->flush($CategoryOption);
  106.     }
  107. }