GiftOptions.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\GiftMessage\Block\Cart;
  7. use Magento\Backend\Block\Template\Context;
  8. use Magento\Framework\Json\Encoder;
  9. use Magento\GiftMessage\Model\CompositeConfigProvider;
  10. /**
  11. * @api
  12. * @since 100.0.2
  13. */
  14. class GiftOptions extends \Magento\Backend\Block\Template
  15. {
  16. /**
  17. * @var bool
  18. */
  19. protected $_isScopePrivate = false;
  20. /**
  21. * @var array
  22. */
  23. protected $jsLayout;
  24. /**
  25. * @var \Magento\Checkout\Model\CompositeConfigProvider
  26. */
  27. protected $configProvider;
  28. /**
  29. * @var array|\Magento\Checkout\Block\Checkout\LayoutProcessorInterface[]
  30. */
  31. protected $layoutProcessors;
  32. /**
  33. * @var Encoder
  34. */
  35. protected $jsonEncoder;
  36. /**
  37. * @param Context $context
  38. * @param Encoder $jsonEncoder
  39. * @param CompositeConfigProvider $configProvider
  40. * @param array $layoutProcessors
  41. * @param array $data
  42. */
  43. public function __construct(
  44. Context $context,
  45. Encoder $jsonEncoder,
  46. CompositeConfigProvider $configProvider,
  47. array $layoutProcessors = [],
  48. array $data = []
  49. ) {
  50. parent::__construct($context, $data);
  51. $this->jsonEncoder = $jsonEncoder;
  52. $this->_isScopePrivate = true;
  53. $this->jsLayout = isset($data['jsLayout']) && is_array($data['jsLayout']) ? $data['jsLayout'] : [];
  54. $this->configProvider = $configProvider;
  55. $this->layoutProcessors = $layoutProcessors;
  56. }
  57. /**
  58. * @return string
  59. */
  60. public function getJsLayout()
  61. {
  62. foreach ($this->layoutProcessors as $processor) {
  63. $this->jsLayout = $processor->process($this->jsLayout);
  64. }
  65. return $this->jsonEncoder->encode($this->jsLayout);
  66. }
  67. /**
  68. * Retrieve gift message configuration
  69. *
  70. * @return array
  71. */
  72. public function getGiftOptionsConfigJson()
  73. {
  74. return $this->jsonEncoder->encode($this->configProvider->getConfig());
  75. }
  76. }