//edit: Thema hat sich erledigt. Manchmal sollte man erstmal in Ruhe einen Kaffee trinken…
**Hallo, in der Dokumentation gibt es folgenden Artikel um einen Filter hinzuzufügen.
Dieses Beispiel scheint offenbar nicht zu funktionieren, da in der Console Fehler 500 ->
Argument 1 passed to Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingSortingRegistry::add() must be an instance of Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingSorting, instance of DRGeolocation\Subscriber\ExampleListingSubscriber given, called in /var/www/vhosts/lopero.de/shopware.lopero.de/vendor/shopware/core/Content/Product/SalesChannel/Listing/ProductListingSortingRegistry.php on line 15
ausgegeben wird.
Hier der Quelltext des Subscribers…
class ExampleListingSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
ProductListingCriteriaEvent::class => 'handleRequest',
ProductListingResultEvent::class => 'handleResult',
];
}
public function handleRequest(ProductListingCriteriaEvent $event)
{
$criteria = $event->getCriteria();
$request = $event->getRequest();
$criteria->addAggregation(
new EntityAggregation('manufacturer', 'product.manufacturerId', 'product_manufacturer')
);
$ids = $this->getManufacturerIds($request);
if (empty($ids)) {
return;
}
$criteria->addPostFilter(new EqualsAnyFilter('product.manufacturerId', $ids));
}
public function handleResult(ProductListingResultEvent $event)
{
$event->getResult()->addCurrentFilter('manufacturer', $this->getManufacturerIds($event->getRequest()));
}
private function getManufacturerIds(Request $request): array
{
$ids = $request->query->get('manufacturer', '');
$ids = explode('|', $ids);
return array_filter($ids);
}
}
und die services.xml
name-desc
filter.sortByNameDescending
desc
hat jemand eine Idee wie man das Problem lösen könnte?
P.S. Wenn ich die Service Argumente weg lasse scheint es wie gewohnt zu funktionieren, allerdings gibts dann auch keinen neuen Filter.