Skip to content

Ajout d'un champs dans l'indexation

Jonathan edited this page Aug 30, 2024 · 1 revision

Pour ajouter un champs dans l'indexation oro :

1. Créer un listener de l'indexation souhaité, ici la website-search et ajouter la méthode onWebsiteSearchIndex

class AddTestFieldToIndexListener
{
    public function onWebsiteSearchIndex(IndexEntityEvent $event): void
    {
        /** @var Product[] $products */
        $products = $event->getEntities();

        //Add data to index
        foreach ($products as $product) {
            $event->addField(
                $product->getId(),
                'test_field',
                1,
                true
            );
        }
    }
}

2. Ajouter le champs et son typage dans un website_search.yml :

Oro\Bundle\ProductBundle\Entity\Product:
    alias: oro_product_WEBSITE_ID
    fields:
        -
            name: test_field
            type: integer
            store: true

3. Configurer le service dans service.yml :

    AppBundle\EventListener\AddTestFieldToIndexListener:
        tags:
            - { name: kernel.event_listener, event: oro_website_search.event.index_entity.product, method: onWebsiteSearchIndex }