Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ValidationMessages.php
Go to the documentation of this file.
1 <?php
7 
10 
18 {
22  protected $cartHelper;
23 
27  protected $currency;
28 
32  private $minimumAmountErrorMessage;
33 
45  public function __construct(
46  \Magento\Framework\View\Element\Template\Context $context,
47  \Magento\Framework\Message\Factory $messageFactory,
48  \Magento\Framework\Message\CollectionFactory $collectionFactory,
49  \Magento\Framework\Message\ManagerInterface $messageManager,
50  InterpretationStrategyInterface $interpretationStrategy,
51  \Magento\Checkout\Helper\Cart $cartHelper,
52  \Magento\Framework\Locale\CurrencyInterface $currency,
53  array $data = []
54  ) {
55  parent::__construct(
56  $context,
60  $interpretationStrategy,
61  $data
62  );
63  $this->cartHelper = $cartHelper;
64  $this->currency = $currency;
65  }
66 
70  protected function _prepareLayout()
71  {
72  if ($this->cartHelper->getItemsCount()) {
73  $this->validateMinimumAmount();
74  $this->addQuoteMessages();
75  $this->addMessages($this->messageManager->getMessages(true));
76  }
77  return parent::_prepareLayout();
78  }
79 
85  protected function validateMinimumAmount()
86  {
87  if (!$this->cartHelper->getQuote()->validateMinimumAmount()) {
88  $this->messageManager->addNoticeMessage($this->getMinimumAmountErrorMessage()->getMessage());
89  }
90  }
91 
96  private function getMinimumAmountErrorMessage()
97  {
98  if ($this->minimumAmountErrorMessage === null) {
99  $objectManager = ObjectManager::getInstance();
100  $this->minimumAmountErrorMessage = $objectManager->get(
101  \Magento\Quote\Model\Quote\Validator\MinimumOrderAmount\ValidationMessage::class
102  );
103  }
104  return $this->minimumAmountErrorMessage;
105  }
106 
112  protected function addQuoteMessages()
113  {
114  // Compose array of messages to add
115  $messages = [];
117  foreach ($this->cartHelper->getQuote()->getMessages() as $message) {
118  if ($message) {
119  // Escape HTML entities in quote message to prevent XSS
120  $message->setText($this->escapeHtml($message->getText()));
121  $messages[] = $message;
122  }
123  }
124 
125  if ($messages) {
126  $this->messageManager->addUniqueMessages($messages);
127  }
128  }
129 }
addMessages(\Magento\Framework\Message\Collection $messages)
Definition: Messages.php:134
$objectManager
Definition: bootstrap.php:17
$message
__construct(\Magento\Framework\View\Element\Template\Context $context, \Magento\Framework\Message\Factory $messageFactory, \Magento\Framework\Message\CollectionFactory $collectionFactory, \Magento\Framework\Message\ManagerInterface $messageManager, InterpretationStrategyInterface $interpretationStrategy, \Magento\Checkout\Helper\Cart $cartHelper, \Magento\Framework\Locale\CurrencyInterface $currency, array $data=[])