Suggest Search Cache deaktivieren

Hallo,

ich habe für die inline-Suchergebnisse (SearchSuggest) einen Filter eingebaut. Da in Shopware 6 aber das Suchergebniss für SearchSuggest über einen Decorator gecached wird, hat der Filter keine Auswirkungen.

Jetzt habe ich die CachedProductSuggestRoute wieder mit meinem eigenen Decorator überschrieben

        <service id="MySearch\Core\Content\Product\SalesChannel\Suggest\SmartSearchCachedProductSuggestRoute" decorates="Shopware\Core\Content\Product\SalesChannel\Suggest\CachedProductSuggestRoute" decoration-priority="-1000" public="true">
            <argument type="service" id="Shopware\Core\Content\Product\SearchKeyword\ProductSearchBuilderInterface"/>
            <argument type="service" id="event_dispatcher"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingLoader"/>
        </service>

und einfach die load Funktion aus der originalen ProductSearchRoute kopiert

Das funktioniert zwar, ist aber nicht gerade schön, weil repetitiv und nicht upgrade-freundlich. Aber mir ist auch nichts anderes eingefallen.

Kann man den Cache für die ProductSearchRoute irgendwie anders deaktivieren?

1 „Gefällt mir“

Okay, war wieder viel zu kompliziert gedacht.

Ich habe jetzt einen Subscriber auf das Event ProductSuggestRouteCacheKeyEvent und dort erweitere ich einfach den Cache-Key um den Filter-Wert (in meinem Fall category)

public function onProductSuggestRouteCacheKeyEvent(ProductSuggestRouteCacheKeyEvent $event)
{
    $request = $event->getRequest();
    if($request->get('category')){
        $event->addPart($request->get('category'));
    }
}

Aber interessant, wie die Lösung oft von alleine kommen, nachdem man irgendwo um Rat gefragt hat :sweat_smile: