9
9
*/
10
10
namespace Magento \Sales \Block \Order ;
11
11
12
+ use Magento \Framework \App \ObjectManager ;
13
+ use Magento \Framework \Registry ;
14
+ use Magento \Framework \View \Element \AbstractBlock ;
15
+ use Magento \Framework \View \Element \Template \Context ;
16
+ use Magento \Sales \Block \Items \AbstractItems ;
17
+ use Magento \Sales \Model \Order ;
18
+ use Magento \Sales \Model \ResourceModel \Order \Item \Collection ;
19
+ use Magento \Sales \Model \ResourceModel \Order \Item \CollectionFactory ;
20
+ use Magento \Theme \Block \Html \Pager ;
21
+
12
22
/**
13
23
* Sales order view items block.
14
24
*
15
25
* @api
16
26
* @since 100.0.2
17
27
*/
18
- class Items extends \ Magento \ Sales \ Block \ Items \ AbstractItems
28
+ class Items extends AbstractItems
19
29
{
20
30
/**
21
31
* Core registry
22
32
*
23
- * @var \Magento\Framework\ Registry
33
+ * @var Registry
24
34
*/
25
35
protected $ _coreRegistry = null ;
26
36
@@ -32,30 +42,30 @@ class Items extends \Magento\Sales\Block\Items\AbstractItems
32
42
private $ itemsPerPage ;
33
43
34
44
/**
35
- * @var \Magento\Sales\Model\ResourceModel\Order\Item\ CollectionFactory
45
+ * @var CollectionFactory
36
46
*/
37
47
private $ itemCollectionFactory ;
38
48
39
49
/**
40
- * @var \Magento\Sales\Model\ResourceModel\Order\Item\ Collection|null
50
+ * @var Collection|null
41
51
*/
42
52
private $ itemCollection ;
43
53
44
54
/**
45
- * @param \Magento\Framework\View\Element\Template\ Context $context
46
- * @param \Magento\Framework\ Registry $registry
55
+ * @param Context $context
56
+ * @param Registry $registry
47
57
* @param array $data
48
- * @param \Magento\Sales\Model\ResourceModel\Order\Item\ CollectionFactory|null $itemCollectionFactory
58
+ * @param CollectionFactory|null $itemCollectionFactory
49
59
*/
50
60
public function __construct (
51
- \ Magento \ Framework \ View \ Element \ Template \ Context $ context ,
52
- \ Magento \ Framework \ Registry $ registry ,
61
+ Context $ context ,
62
+ Registry $ registry ,
53
63
array $ data = [],
54
- \ Magento \ Sales \ Model \ ResourceModel \ Order \ Item \ CollectionFactory $ itemCollectionFactory = null
64
+ CollectionFactory $ itemCollectionFactory = null
55
65
) {
56
66
$ this ->_coreRegistry = $ registry ;
57
- $ this ->itemCollectionFactory = $ itemCollectionFactory ?: \ Magento \ Framework \ App \ ObjectManager::getInstance ()
58
- ->get (\ Magento \ Sales \ Model \ ResourceModel \ Order \ Item \ CollectionFactory::class);
67
+ $ this ->itemCollectionFactory = $ itemCollectionFactory ?: ObjectManager::getInstance ()
68
+ ->get (CollectionFactory::class);
59
69
parent ::__construct ($ context , $ data );
60
70
}
61
71
@@ -68,18 +78,12 @@ public function __construct(
68
78
protected function _prepareLayout ()
69
79
{
70
80
$ this ->itemsPerPage = $ this ->_scopeConfig ->getValue ('sales/orders/items_per_page ' );
81
+ $ this ->itemCollection = $ this ->createItemsCollection ();
71
82
72
- $ this ->itemCollection = $ this ->itemCollectionFactory ->create ();
73
- $ this ->itemCollection ->setOrderFilter ($ this ->getOrder ());
74
-
75
- /** @var \Magento\Theme\Block\Html\Pager $pagerBlock */
83
+ /** @var Pager $pagerBlock */
76
84
$ pagerBlock = $ this ->getChildBlock ('sales_order_item_pager ' );
77
85
if ($ pagerBlock ) {
78
- $ pagerBlock ->setLimit ($ this ->itemsPerPage );
79
- //here pager updates collection parameters
80
- $ pagerBlock ->setCollection ($ this ->itemCollection );
81
- $ pagerBlock ->setAvailableLimit ([$ this ->itemsPerPage ]);
82
- $ pagerBlock ->setShowAmounts ($ this ->isPagerDisplayed ());
86
+ $ this ->preparePager ($ pagerBlock );
83
87
}
84
88
85
89
return parent ::_prepareLayout ();
@@ -122,18 +126,47 @@ public function getItems()
122
126
*/
123
127
public function getPagerHtml ()
124
128
{
125
- /** @var \Magento\Theme\Block\Html\ Pager $pagerBlock */
129
+ /** @var Pager $pagerBlock */
126
130
$ pagerBlock = $ this ->getChildBlock ('sales_order_item_pager ' );
127
131
return $ pagerBlock ? $ pagerBlock ->toHtml () : '' ;
128
132
}
129
133
130
134
/**
131
135
* Retrieve current order model instance
132
136
*
133
- * @return \Magento\Sales\Model\ Order
137
+ * @return Order
134
138
*/
135
139
public function getOrder ()
136
140
{
137
141
return $ this ->_coreRegistry ->registry ('current_order ' );
138
142
}
143
+
144
+ /**
145
+ * Prepare pager block
146
+ *
147
+ * @param AbstractBlock $pagerBlock
148
+ */
149
+ private function preparePager (AbstractBlock $ pagerBlock ): void
150
+ {
151
+ $ collectionToPager = $ this ->createItemsCollection ();
152
+ $ collectionToPager ->addFieldToFilter ('parent_item_id ' , ['null ' => true ]);
153
+ $ pagerBlock ->setCollection ($ collectionToPager );
154
+
155
+ $ pagerBlock ->setLimit ($ this ->itemsPerPage );
156
+ $ pagerBlock ->setAvailableLimit ([$ this ->itemsPerPage ]);
157
+ $ pagerBlock ->setShowAmounts ($ this ->isPagerDisplayed ());
158
+ }
159
+
160
+ /**
161
+ * Create items collection
162
+ *
163
+ * @return Collection
164
+ */
165
+ private function createItemsCollection (): Collection
166
+ {
167
+ $ collection = $ this ->itemCollectionFactory ->create ();
168
+ $ collection ->setOrderFilter ($ this ->getOrder ());
169
+
170
+ return $ collection ;
171
+ }
139
172
}
0 commit comments