ValidationMessages.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Paypal\Block\Cart;
  7. use Magento\Framework\Message\MessageInterface;
  8. use Magento\Framework\View\Element\Message\InterpretationStrategyInterface;
  9. /**
  10. * PayPal order review page validation messages block
  11. *
  12. * @api
  13. * @since 100.0.2
  14. */
  15. class ValidationMessages extends \Magento\Framework\View\Element\Messages
  16. {
  17. /**
  18. * @var \Magento\Checkout\Helper\Cart
  19. */
  20. protected $cartHelper;
  21. /**
  22. * @param \Magento\Framework\View\Element\Template\Context $context
  23. * @param \Magento\Framework\Message\Factory $messageFactory
  24. * @param \Magento\Framework\Message\CollectionFactory $collectionFactory
  25. * @param \Magento\Framework\Message\ManagerInterface $messageManager
  26. * @param InterpretationStrategyInterface $interpretationStrategy
  27. * @param \Magento\Checkout\Helper\Cart $cartHelper
  28. * @param array $data
  29. */
  30. public function __construct(
  31. \Magento\Framework\View\Element\Template\Context $context,
  32. \Magento\Framework\Message\Factory $messageFactory,
  33. \Magento\Framework\Message\CollectionFactory $collectionFactory,
  34. \Magento\Framework\Message\ManagerInterface $messageManager,
  35. InterpretationStrategyInterface $interpretationStrategy,
  36. \Magento\Checkout\Helper\Cart $cartHelper,
  37. array $data = []
  38. ) {
  39. parent::__construct(
  40. $context,
  41. $messageFactory,
  42. $collectionFactory,
  43. $messageManager,
  44. $interpretationStrategy,
  45. $data
  46. );
  47. $this->cartHelper = $cartHelper;
  48. }
  49. /**
  50. * @return $this
  51. */
  52. protected function _prepareLayout()
  53. {
  54. if ($this->cartHelper->getItemsCount()) {
  55. $this->addQuoteMessages();
  56. $this->addMessages($this->messageManager->getMessages(true));
  57. }
  58. return parent::_prepareLayout();
  59. }
  60. /**
  61. * Add quote messages
  62. *
  63. * @return void
  64. */
  65. protected function addQuoteMessages()
  66. {
  67. // Compose array of messages to add
  68. $messages = [];
  69. /** @var MessageInterface $message */
  70. foreach ($this->cartHelper->getQuote()->getMessages() as $message) {
  71. if (!$message->getIdentifier()) {
  72. try {
  73. $messages[] = $this->messageManager
  74. ->createMessage($message->getType())
  75. ->setText($message->getText());
  76. } catch (\InvalidArgumentException $e) {
  77. // pass
  78. }
  79. } else {
  80. $messages[] = $message;
  81. }
  82. }
  83. $this->messageManager->addUniqueMessages(
  84. $messages
  85. );
  86. }
  87. }