123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Checkout\Block\Cart;
- use Magento\Store\Model\ScopeInterface;
- /**
- * Cart sidebar block
- *
- * @api
- * @since 100.0.2
- */
- class Sidebar extends AbstractCart
- {
- /**
- * Xml pah to checkout sidebar display value
- */
- const XML_PATH_CHECKOUT_SIDEBAR_DISPLAY = 'checkout/sidebar/display';
- /**
- * Xml pah to checkout sidebar count value
- */
- const XML_PATH_CHECKOUT_SIDEBAR_COUNT = 'checkout/sidebar/count';
- /**
- * @var \Magento\Catalog\Helper\Image
- */
- protected $imageHelper;
- /**
- * @var \Magento\Framework\Serialize\Serializer\Json
- */
- private $serializer;
- /**
- * @param \Magento\Framework\View\Element\Template\Context $context
- * @param \Magento\Customer\Model\Session $customerSession
- * @param \Magento\Checkout\Model\Session $checkoutSession
- * @param \Magento\Catalog\Helper\Image $imageHelper
- * @param \Magento\Customer\CustomerData\JsLayoutDataProviderPoolInterface $jsLayoutDataProvider
- * @param array $data
- * @param \Magento\Framework\Serialize\Serializer\Json|null $serializer
- * @throws \RuntimeException
- */
- public function __construct(
- \Magento\Framework\View\Element\Template\Context $context,
- \Magento\Customer\Model\Session $customerSession,
- \Magento\Checkout\Model\Session $checkoutSession,
- \Magento\Catalog\Helper\Image $imageHelper,
- \Magento\Customer\CustomerData\JsLayoutDataProviderPoolInterface $jsLayoutDataProvider,
- array $data = [],
- \Magento\Framework\Serialize\Serializer\Json $serializer = null
- ) {
- if (isset($data['jsLayout'])) {
- $this->jsLayout = array_merge_recursive($jsLayoutDataProvider->getData(), $data['jsLayout']);
- unset($data['jsLayout']);
- } else {
- $this->jsLayout = $jsLayoutDataProvider->getData();
- }
- parent::__construct($context, $customerSession, $checkoutSession, $data);
- $this->_isScopePrivate = false;
- $this->imageHelper = $imageHelper;
- $this->serializer = $serializer ?: \Magento\Framework\App\ObjectManager::getInstance()
- ->get(\Magento\Framework\Serialize\Serializer\Json::class);
- }
- /**
- * Returns minicart config
- *
- * @return array
- */
- public function getConfig()
- {
- return [
- 'shoppingCartUrl' => $this->getShoppingCartUrl(),
- 'checkoutUrl' => $this->getCheckoutUrl(),
- 'updateItemQtyUrl' => $this->getUpdateItemQtyUrl(),
- 'removeItemUrl' => $this->getRemoveItemUrl(),
- 'imageTemplate' => $this->getImageHtmlTemplate(),
- 'baseUrl' => $this->getBaseUrl(),
- 'minicartMaxItemsVisible' => $this->getMiniCartMaxItemsCount(),
- 'websiteId' => $this->_storeManager->getStore()->getWebsiteId(),
- 'maxItemsToDisplay' => $this->getMaxItemsToDisplay(),
- 'storeId' => $this->_storeManager->getStore()->getId()
- ];
- }
- /**
- * Get serialized config
- *
- * @return string
- * @since 100.2.0
- */
- public function getSerializedConfig()
- {
- return $this->serializer->serialize($this->getConfig());
- }
- /**
- * Get image html template
- *
- * @return string
- */
- public function getImageHtmlTemplate()
- {
- return 'Magento_Catalog/product/image_with_borders';
- }
- /**
- * Get one page checkout page url
- *
- * @codeCoverageIgnore
- * @return string
- */
- public function getCheckoutUrl()
- {
- return $this->getUrl('checkout');
- }
- /**
- * Get shopping cart page url
- *
- * @return string
- * @codeCoverageIgnore
- */
- public function getShoppingCartUrl()
- {
- return $this->getUrl('checkout/cart');
- }
- /**
- * Get update cart item url
- *
- * @return string
- * @codeCoverageIgnore
- * @SuppressWarnings(PHPMD.RequestAwareBlockMethod)
- */
- public function getUpdateItemQtyUrl()
- {
- return $this->getUrl('checkout/sidebar/updateItemQty', ['_secure' => $this->getRequest()->isSecure()]);
- }
- /**
- * Get remove cart item url
- *
- * @return string
- * @codeCoverageIgnore
- * @SuppressWarnings(PHPMD.RequestAwareBlockMethod)
- */
- public function getRemoveItemUrl()
- {
- return $this->getUrl('checkout/sidebar/removeItem', ['_secure' => $this->getRequest()->isSecure()]);
- }
- /**
- * Define if Mini Shopping Cart Pop-Up Menu enabled
- *
- * @return bool
- * @codeCoverageIgnore
- * @SuppressWarnings(PHPMD.BooleanGetMethodName)
- */
- public function getIsNeedToDisplaySideBar()
- {
- return (bool)$this->_scopeConfig->getValue(
- self::XML_PATH_CHECKOUT_SIDEBAR_DISPLAY,
- ScopeInterface::SCOPE_STORE
- );
- }
- /**
- * Return totals from custom quote if needed
- *
- * @return array
- */
- public function getTotalsCache()
- {
- if (empty($this->_totals)) {
- $quote = $this->getCustomQuote() ? $this->getCustomQuote() : $this->getQuote();
- $this->_totals = $quote->getTotals();
- }
- return $this->_totals;
- }
- /**
- * Retrieve subtotal block html
- *
- * @codeCoverageIgnore
- * @return string
- */
- public function getTotalsHtml()
- {
- return $this->getLayout()->getBlock('checkout.cart.minicart.totals')->toHtml();
- }
- /**
- * Return base url.
- *
- * @codeCoverageIgnore
- * @return string
- */
- public function getBaseUrl()
- {
- return $this->_storeManager->getStore()->getBaseUrl();
- }
- /**
- * Return max visible item count for minicart
- *
- * @return int
- */
- private function getMiniCartMaxItemsCount()
- {
- return (int)$this->_scopeConfig->getValue('checkout/sidebar/count', ScopeInterface::SCOPE_STORE);
- }
- /**
- * Returns maximum cart items to display
- *
- * This setting regulates how many items will be displayed in minicart
- *
- * @return int
- */
- private function getMaxItemsToDisplay()
- {
- return (int)$this->_scopeConfig->getValue(
- 'checkout/sidebar/max_items_display_count',
- ScopeInterface::SCOPE_STORE
- );
- }
- }
|