<?php
namespace Twigel\BonusProgram\Subscriber;
use Shopware\Core\Content\Product\Events\ProductListingResultEvent;
use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ProductListingLoaded implements EventSubscriberInterface
{
/** @var EntityRepository */
private $productBonusRepository;
public function __construct(
EntityRepository $productBonusRepository
)
{
$this->productBonusRepository = $productBonusRepository;
}
/**
* @inheritDoc
*/
public static function getSubscribedEvents()
{
return [
ProductListingResultEvent::class => 'onListingLoad'
];
}
public function onListingLoad(ProductListingResultEvent $event)
{
$criteria = new Criteria();
$criteria->setLimit(5);
$criteria->addAssociations(["product.cover"]);
$products = $this->productBonusRepository->search($criteria, $event->getContext());
if ($products->getTotal()){
$event->getContext()->addExtension('sidebarBonusProducts' , $products);
}
}
}