/
githubmirror
/
magento2
Обзор
Документация
Войти
/
githubmirror
/
magento2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
2.4-develop
lib/internal/Magento/Framework/Pricing/Render.php
128 строк
4 KB
Alexandra Zota
ACP2E-4019: CE copyright updates for 2.4.9-beta1
22 окт 2025, 17:47
22 окт 2025, 17:47
1b769b7
Код
Авторство
О чём код?
<?php /** * Copyright 2014 Adobe * All Rights Reserved. */ 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(); } }