Messages.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Theme\CustomerData;
  7. use Magento\Customer\CustomerData\SectionSourceInterface;
  8. use Magento\Framework\Message\ManagerInterface as MessageManager;
  9. use Magento\Framework\Message\MessageInterface;
  10. use Magento\Framework\View\Element\Message\InterpretationStrategyInterface;
  11. /**
  12. * Messages section
  13. */
  14. class Messages implements SectionSourceInterface
  15. {
  16. /**
  17. * Manager messages
  18. *
  19. * @var MessageManager
  20. */
  21. protected $messageManager;
  22. /**
  23. * @var InterpretationStrategyInterface
  24. */
  25. private $interpretationStrategy;
  26. /**
  27. * Constructor
  28. *
  29. * @param MessageManager $messageManager
  30. * @param InterpretationStrategyInterface $interpretationStrategy
  31. */
  32. public function __construct(
  33. MessageManager $messageManager,
  34. InterpretationStrategyInterface $interpretationStrategy
  35. ) {
  36. $this->messageManager = $messageManager;
  37. $this->interpretationStrategy = $interpretationStrategy;
  38. }
  39. /**
  40. * @inheritdoc
  41. */
  42. public function getSectionData()
  43. {
  44. $messages = $this->messageManager->getMessages(true);
  45. return [
  46. 'messages' => array_reduce(
  47. $messages->getItems(),
  48. function (array $result, MessageInterface $message) {
  49. $result[] = [
  50. 'type' => $message->getType(),
  51. 'text' => $this->interpretationStrategy->interpret($message)
  52. ];
  53. return $result;
  54. },
  55. []
  56. ),
  57. ];
  58. }
  59. }