| Current Path : /srv/web/sites/trentinoplant.it/httpdocs/vendor/magento/module-sales/Block/Items/ |
| Current File : /srv/web/sites/trentinoplant.it/httpdocs/vendor/magento/module-sales/Block/Items/AbstractItems.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Sales\Block\Items;
use Magento\Sales\ViewModel\ItemRendererTypeResolverInterface;
/**
* Abstract block for display sales (quote/order/invoice etc.) items
*
* @SuppressWarnings(PHPMD.NumberOfChildren)
*/
class AbstractItems extends \Magento\Framework\View\Element\Template
{
/**
* Block alias fallback
*/
public const DEFAULT_TYPE = 'default';
/**
* Retrieve item renderer block
*
* @param string $type
* @return \Magento\Framework\View\Element\AbstractBlock
* @throws \RuntimeException
* @SuppressWarnings(PHPMD.NPathComplexity)
*/
public function getItemRenderer($type)
{
/** @var \Magento\Framework\View\Element\RendererList $rendererList */
$rendererList = $this->getRendererListName() ? $this->getLayout()->getBlock(
$this->getRendererListName()
) : $this->getChildBlock(
'renderer.list'
);
if (!$rendererList) {
throw new \RuntimeException('Renderer list for block "' . $this->getNameInLayout() . '" is not defined');
}
$overriddenTemplates = $this->getOverriddenTemplates() ?: [];
$template = isset($overriddenTemplates[$type]) ? $overriddenTemplates[$type] : $this->getRendererTemplate();
$renderer = $rendererList->getRenderer($type, self::DEFAULT_TYPE, $template);
$renderer->setRenderedBlock($this);
return $renderer;
}
/**
* Prepare item before output
*
* @param \Magento\Framework\View\Element\AbstractBlock $renderer
* @return $this
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _prepareItem(\Magento\Framework\View\Element\AbstractBlock $renderer)
{
return $this;
}
/**
* Return product type for quote/order item
*
* @param \Magento\Framework\DataObject $item
* @return string
*/
protected function _getItemType(\Magento\Framework\DataObject $item)
{
if ($item->getOrderItem()) {
$type = $item->getOrderItem()->getProductType();
} elseif ($item instanceof \Magento\Quote\Model\Quote\Address\Item) {
$type = $item->getQuoteItem()->getProductType();
} else {
$type = $item->getProductType();
}
return $type;
}
/**
* Get item row html
*
* @param \Magento\Framework\DataObject $item
* @return string
*/
public function getItemHtml(\Magento\Framework\DataObject $item)
{
$type = $this->_getItemType($item);
$itemRendererTypeResolver = $this->getData($type . '_renderer_type_resolver');
if ($itemRendererTypeResolver instanceof ItemRendererTypeResolverInterface) {
$type = $itemRendererTypeResolver->resolve($item) ?? $type;
}
$block = $this->getItemRenderer($type)->setItem($item);
$this->_prepareItem($block);
return $block->toHtml();
}
}