![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/app/code/Cnc/Catalog/Model/Product/ |
<?php /** * Copyright (c) 2020 Kaliop Digital Commerce (https://digitalcommerce.kaliop.com) All Rights Reserved. * https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) * cnc_catalog_m2 * <[email protected]> */ declare(strict_types=1); namespace Cnc\Catalog\Model\Product; use Cnc\Catalog\Block\Product\Grouped\View\Source; use Magento\Checkout\Helper\Cart; use Magento\Framework\App\ActionInterface; use Magento\Framework\App\RequestInterface; use Magento\Framework\Url\EncoderInterface; use Magento\Framework\UrlInterface; use Magento\Framework\View\Element\Block\ArgumentInterface; use Magento\Framework\View\LayoutInterface; class Product implements ArgumentInterface { /** * @var Cart */ private $cartHelper; /** * @var RequestInterface */ private $request; /** * @var UrlInterface */ private $urlBuilder; /** * @var EncoderInterface */ private $urlEncoder; /** * @var LayoutInterface */ private $layout; /** * Product constructor. * @param Cart $cartHelper * @param RequestInterface $request * @param UrlInterface $urlBuilder * @param EncoderInterface $urlEncoder * @param LayoutInterface $layout */ public function __construct( Cart $cartHelper, RequestInterface $request, UrlInterface $urlBuilder, EncoderInterface $urlEncoder, LayoutInterface $layout ) { $this->cartHelper = $cartHelper; $this->request = $request; $this->urlBuilder = $urlBuilder; $this->urlEncoder = $urlEncoder; $this->layout = $layout; } /** * Retrieve url for direct adding product to cart * * @param \Magento\Catalog\Model\Product $product * @param array $additional * @return string */ public function getAddToCartUrl(\Magento\Catalog\Model\Product $product, $additional = []): string { if ($this->request->getParam('wishlist_next')) { $additional['wishlist_next'] = 1; } $addUrlKey = ActionInterface::PARAM_NAME_URL_ENCODED; $addUrlValue = $this->urlBuilder->getUrl('*/*/*', ['_use_rewrite' => true, '_current' => true]); $additional[$addUrlKey] = $this->urlEncoder->encode($addUrlValue); return $this->cartHelper->getAddUrl($product, $additional); } /** * @param \Magento\Catalog\Model\Product $product * @param \Cnc\Catalog\Model\Product\Stock $stockViewModel * @return string */ public function renderProductSourceBlock( \Magento\Catalog\Model\Product $product, \Cnc\Catalog\Model\Product\Stock $stockViewModel ): string { $block = $this->layout->createBlock(Source::class, 'block_source_' . $product->getId(), [ 'data' => [ 'product' => $product, 'stock_view_model' => $stockViewModel, 'offset', '_' . $product->getId() ] ]); $block->setTemplate('Cnc_GroupedProduct::product/view/source.phtml'); return $block->toHtml(); } }