| Current Path : /srv/web/sites/shop.cappellettinovasalus.it/httpdocs/vendor/magento/framework/Pricing/ |
| Current File : /srv/web/sites/shop.cappellettinovasalus.it/httpdocs/vendor/magento/framework/Pricing/Render.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Framework\Pricing;
use Magento\Framework\Pricing\Amount\AmountInterface;
use Magento\Framework\Pricing\Price\PriceInterface;
use Magento\Framework\Pricing\Render\Layout;
use Magento\Framework\View\Element\AbstractBlock;
use Magento\Framework\View\Element\Template;
/**
* Base price render
*
* @method string getPriceRenderHandle()
* @api
* @since 100.0.2
*/
class Render extends AbstractBlock
{
/**#@+
* Zones where prices displaying can be configured
*/
public const ZONE_ITEM_VIEW = 'item_view';
public const ZONE_ITEM_LIST = 'item_list';
public const ZONE_ITEM_OPTION = 'item_option';
public const ZONE_SALES = 'sales';
public const ZONE_EMAIL = 'email';
public const ZONE_CART = 'cart';
public const ZONE_DEFAULT = null;
/**#@-*/
/**
* @var string
*/
protected $defaultTypeRender = 'default';
/**
* @var Layout
*/
protected $priceLayout;
/**
* Constructor
*
* @param Template\Context $context
* @param Layout $priceLayout
* @param array $data
*/
public function __construct(
Template\Context $context,
Layout $priceLayout,
array $data = []
) {
$this->priceLayout = $priceLayout;
parent::__construct($context, $data);
}
/**
* Prepare layout
*
* @return $this
*/
protected function _prepareLayout()
{
$this->priceLayout->addHandle($this->getPriceRenderHandle());
//phpcs:ignore
$this->priceLayout->loadLayout();
return parent::_prepareLayout();
}
/**
* Render price
*
* @param string $priceCode
* @param SaleableInterface $saleableItem
* @param array $arguments
* @return string
* @throws \InvalidArgumentException
* @throws \RuntimeException
*/
public function render($priceCode, SaleableInterface $saleableItem, array $arguments = [])
{
$useArguments = array_replace($this->_data, $arguments);
/** @var \Magento\Framework\Pricing\Render\RendererPool $rendererPool */
$rendererPool = $this->priceLayout->getBlock('render.product.prices');
if (!$rendererPool) {
throw new \RuntimeException('Wrong Price Rendering layout configuration. Factory block is missed');
}
// obtain concrete Price Render
$priceRender = $rendererPool->createPriceRender($priceCode, $saleableItem, $useArguments);
return $priceRender->toHtml();
}
/**
* Render price amount
*
* @param AmountInterface $amount
* @param PriceInterface $price
* @param SaleableInterface $saleableItem
* @param array $arguments
* @return string
* @throws \RuntimeException
*/
public function renderAmount(
AmountInterface $amount,
PriceInterface $price,
SaleableInterface $saleableItem = null,
array $arguments = []
) {
$useArguments = array_replace($this->_data, $arguments);
/** @var \Magento\Framework\Pricing\Render\RendererPool $rendererPool */
$rendererPool = $this->priceLayout->getBlock('render.product.prices');
if (!$rendererPool) {
throw new \RuntimeException('Wrong Price Rendering layout configuration. Factory block is missed');
}
// obtain concrete Amount Render
$amountRender = $rendererPool->createAmountRender($amount, $saleableItem, $price, $useArguments);
return $amountRender->toHtml();
}
}