12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Block\Items;
- /**
- * Abstract block for display sales (quote/order/invoice etc.) items
- *
- * @author Magento Core Team <core@magentocommerce.com>
- * @SuppressWarnings(PHPMD.NumberOfChildren)
- */
- class AbstractItems extends \Magento\Framework\View\Element\Template
- {
- /**
- * Block alias fallback
- */
- 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);
- $block = $this->getItemRenderer($type)->setItem($item);
- $this->_prepareItem($block);
- return $block->toHtml();
- }
- }
|