src/EventListener/OnPreSendDataEventListener.php line 15

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Model\Product\Car;
  4. use Pimcore\Event\Model\DataObjectEvent;
  5. use Pimcore\Model\DataObject\ClassDefinition;
  6. use Pimcore\Model\DataObject\ClassDefinition\Data\Objectbricks;
  7. use Pimcore\Model\DataObject\Product;
  8. use Symfony\Component\EventDispatcher\Attribute\AsEventListener;
  9. use Symfony\Component\EventDispatcher\GenericEvent;
  10. final class OnPreSendDataEventListener {
  11.     public function onPreSendData(GenericEvent $event)
  12.     {
  13.         return;
  14.         $object $event->getArgument("object");
  15.         if(!$object instanceof Product) {
  16.             return;
  17.         }
  18.         // get current category
  19.         $category $object->getCategorie_exact();
  20.         if($category == null) {
  21.             return;
  22.         }
  23.         $categoryKey strtolower($category->getKey());
  24.         $data $event->getArgument("data");
  25.         $this->hideObjectBrickByCategory($categoryKey$data);
  26.         $event->setArgument("data"$data);
  27.     }
  28.     private function hideObjectBrickByCategory($category$data)
  29.     {
  30.     $category str_replace(' '''$category);
  31.     $categroy strtolower($category);
  32.         $availableTechData = [$category];
  33.         $data $this->modifyData($availableTechData$data);
  34.         return $data;
  35.     }
  36.     public function modifyData($availableTechData$data)
  37.     {
  38.         foreach($data['layout']->childs[0]->childs[1]->childs[4]->childs as $key => $value) {
  39.             if ($value instanceof ObjectBricks) {
  40.         $cleanTitle str_replace(' '''$value->title);
  41.                 $cleanTitle strtolower($cleanTitle);
  42.         $cleanName str_replace(' '''$value->name);
  43.                 $cleanName strtolower($cleanName);
  44.                 if(in_array($cleanTitle$availableTechData) || in_array($cleanName$availableTechData)) {
  45.                     continue;
  46.                 }
  47.                 if ($cleanTitle == "techdatageneral" || $cleanName == "techdatageneral" ) {
  48.                     continue;
  49.                 }
  50.         $value->invisible true;
  51.             }
  52.         }
  53.         return $data;
  54.     }
  55. }