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