custom/plugins/KmPitchPrint/src/Subscribers/AccountSubscriber.php line 41

Open in your IDE?
  1. <?php
  2. namespace KmPitchPrint\Subscribers;
  3. use Shopware\Core\Checkout\Order\Aggregate\OrderLineItem\OrderLineItemCollection;
  4. use Shopware\Core\Framework\DataAbstractionLayer\EntityRepository;
  5. use Shopware\Core\Framework\DataAbstractionLayer\Search\Filter\EqualsFilter;
  6. use Shopware\Storefront\Event\RouteRequest\OrderRouteRequestEvent;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Shopware\Storefront\Page\Account\Order\AccountEditOrderPageLoadedEvent;
  9. use Shopware\Core\Framework\DataAbstractionLayer\Search\Criteria;
  10. class AccountSubscriber implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var EntityRepository
  14.      */
  15.     private $productRepository;
  16.     /**
  17.      * @var EntityRepository
  18.      */
  19.     private $orderRepository;
  20.     public function __construct(
  21.     ){
  22.     }
  23.     public static function getSubscribedEvents()
  24.     {
  25.         return [
  26.             OrderRouteRequestEvent::class=>'orderRouteRequestEvent',
  27.             AccountEditOrderPageLoadedEvent::class=>'accountEditOrderLoaded'
  28.         ];
  29.     }
  30.     public function orderRouteRequestEvent(OrderRouteRequestEvent $event){
  31.         $criteria $event->getCriteria();
  32.         $criteria->getAssociation('lineItems.product');
  33.         $criteria->addAssociation('lineItems.product.media');
  34.     }
  35.     /**
  36.      * @param OrderLineItemCollection $lineItems
  37.      * @return array
  38.      */
  39.     private function exractProducts(OrderLineItemCollection $lineItems): array{
  40.         $products = [];
  41.         foreach ($lineItems as $lineItem){
  42.             if($lineItem->getProduct()){
  43.                 $products[$lineItem->getProductId()] = $lineItem->getProduct();
  44.             }
  45.         }
  46.         return $products;
  47.     }
  48.     /**
  49.      * @param AccountEditOrderPageLoadedEvent $event
  50.      * @return void
  51.      */
  52.     public function accountEditOrderLoaded(AccountEditOrderPageLoadedEvent $event): void{
  53.         $page $event->getPage();
  54.         $products $this->exractProducts($page->getOrder()->getLineItems());
  55.         $page->assign(['products'=>$products]);
  56.        # dump($page->products);exit;
  57.     }
  58. }