BlockRenderer.php 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View\Element\Message\Renderer;
  7. use Magento\Framework\Message\MessageInterface;
  8. use Magento\Framework\View\Element\Message\Renderer\BlockRenderer\Template;
  9. class BlockRenderer implements RendererInterface
  10. {
  11. /**
  12. * complex_renderer
  13. */
  14. const CODE = 'block_renderer';
  15. /**
  16. * @var array
  17. */
  18. private $configuration;
  19. /**
  20. * @var Template
  21. */
  22. private $template;
  23. /**
  24. * @param Template $template
  25. */
  26. public function __construct(
  27. Template $template
  28. ) {
  29. $this->template = $template;
  30. }
  31. /**
  32. * Renders complex message
  33. *
  34. * @param MessageInterface $message
  35. * @param array $initializationData
  36. * @return string
  37. */
  38. public function render(MessageInterface $message, array $initializationData)
  39. {
  40. $this->setUpConfiguration($message->getData(), $initializationData);
  41. $result = $this->template->toHtml();
  42. $this->tearDownConfiguration();
  43. return $result;
  44. }
  45. /**
  46. * @param array $configuration
  47. * @param array $initializationData
  48. * @return void
  49. */
  50. private function setUpConfiguration(array $configuration, array $initializationData)
  51. {
  52. if (!isset($initializationData['template'])) {
  53. throw new \InvalidArgumentException('Template should be provided for the renderer.');
  54. }
  55. $this->configuration = $configuration;
  56. $this->template->setTemplate($initializationData['template']);
  57. $this->template->setData($configuration);
  58. }
  59. /**
  60. * @return void
  61. */
  62. private function tearDownConfiguration()
  63. {
  64. foreach (array_keys($this->configuration) as $key) {
  65. $this->template->unsetData($key);
  66. unset($this->configuration[$key]);
  67. }
  68. $this->template->setTemplate('');
  69. }
  70. }