src/ElasticSearch/PropertyBuilder/MetaKeywordsNameBuilder.php line 20

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 BitBag\SyliusElasticsearchPlugin\PropertyNameResolver\ConcatedNameResolverInterface;
  7. use Elastica\Document;
  8. use FOS\ElasticaBundle\Event\PostTransformEvent;
  9. use Sylius\Component\Core\Model\ProductTranslationInterface;
  10. final class MetaKeywordsNameBuilder extends AbstractBuilder
  11. {
  12.     public function __construct(private ConcatedNameResolverInterface $productMetaKeywordNameResolver)
  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.                 /** @var ProductTranslationInterface $productTranslation */
  22.                 foreach ($product->getTranslations() as $productTranslation) {
  23.                     $locale $productTranslation->getLocale();
  24.                     if ($locale === null) {
  25.                         continue;
  26.                     }
  27.                     $propertyName $this->productMetaKeywordNameResolver
  28.                         ->resolvePropertyName($locale);
  29.                     $document->set($propertyName$productTranslation->getMetaKeywords());
  30.                 }
  31.             },
  32.         );
  33.     }
  34. }