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