Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ProductViewCounter.php
Go to the documentation of this file.
1 <?php
7 
15 use Magento\Catalog\Model\ProductRenderFactory;
19 
30 {
34  private $productRepository;
35 
39  private $productRenderCollectorComposite;
40 
44  private $storeManager;
45 
49  private $productRenderFactory;
50 
54  private $hydrator;
55 
59  private $serialize;
60 
64  private $url;
65 
69  private $registry;
70 
82  public function __construct(
83  Template\Context $context,
84  ProductRepository $productRepository,
85  ProductRenderCollectorComposite $productRenderCollectorComposite,
86  StoreManager $storeManager,
87  ProductRenderFactory $productRenderFactory,
88  Hydrator $hydrator,
89  SerializerInterface $serialize,
90  Url $url,
91  Registry $registry
92  ) {
93  parent::__construct($context);
94  $this->productRepository = $productRepository;
95  $this->productRenderCollectorComposite = $productRenderCollectorComposite;
96  $this->storeManager = $storeManager;
97  $this->productRenderFactory = $productRenderFactory;
98  $this->hydrator = $hydrator;
99  $this->serialize = $serialize;
100  $this->url = $url;
101  $this->registry = $registry;
102  }
103 
113  public function getCurrentProductData()
114  {
116  $product = $this->registry->registry('product');
118  $store = $this->storeManager->getStore();
119 
120  if (!$product || !$product->getId()) {
121  return $this->serialize->serialize([
122  'items' => [],
123  'store' => $store->getId(),
124  'currency' => $store->getCurrentCurrency()->getCode()
125  ]);
126  }
127 
128  $productRender = $this->productRenderFactory->create();
129 
130  $productRender->setStoreId($store->getId());
131  $productRender->setCurrencyCode($store->getCurrentCurrencyCode());
132  $this->productRenderCollectorComposite
133  ->collect($product, $productRender);
134  $data = $this->hydrator->extract($productRender);
135 
136  $currentProductData = [
137  'items' => [
138  $product->getId() => $data
139  ],
140  'store' => $store->getId(),
141  'currency' => $store->getCurrentCurrency()->getCode()
142  ];
143 
144  return $this->serialize->serialize($currentProductData);
145  }
146 }
$storeManager
serialize($keys=[], $valueSeparator='=', $fieldSeparator=' ', $quote='"')
Definition: DataObject.php:446
__construct(Template\Context $context, ProductRepository $productRepository, ProductRenderCollectorComposite $productRenderCollectorComposite, StoreManager $storeManager, ProductRenderFactory $productRenderFactory, Hydrator $hydrator, SerializerInterface $serialize, Url $url, Registry $registry)