src/ElasticSearch/PropertyBuilder/SamplePackNameBuilder.php line 21

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\ElasticSearch\PropertyBuilder;
  4. use App\Entity\Product\ProductInterface;
  5. use BitBag\SyliusElasticsearchPlugin\PropertyBuilder\AbstractBuilder;
  6. use Elastica\Document;
  7. use FOS\ElasticaBundle\Event\PostTransformEvent;
  8. use function implode;
  9. final class SamplePackNameBuilder extends AbstractBuilder
  10. {
  11.     public function __construct(
  12.         private string $fieldName,
  13.     ) {
  14.     }
  15.     public function consumeEvent(PostTransformEvent $event): void
  16.     {
  17.         $this->buildProperty(
  18.             $event,
  19.             \Sylius\Component\Core\Model\ProductInterface::class,
  20.             function (ProductInterface $productDocument $document): void {
  21.                 $this->resolvePackSamples($product$document);
  22.             },
  23.         );
  24.     }
  25.     private function resolvePackSamples(ProductInterface $productDocument $document): void
  26.     {
  27.         $titleArray = [];
  28.         foreach ($product->getPackSamples() as $packSample) {
  29.             $titleArray[] = $packSample->getTitle();
  30.         }
  31.         $document->set($this->fieldNameimplode(' '$titleArray));
  32.     }
  33. }