99 */
1010namespace Magento \Sales \Block \Order ;
1111
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+
1223/**
1324 * Sales order view items block.
1425 *
1526 * @api
1627 * @since 100.0.2
1728 */
18- class Items extends \ Magento \ Sales \ Block \ Items \ AbstractItems
29+ class Items extends AbstractItems
1930{
2031 /**
2132 * Core registry
2233 *
23- * @var \Magento\Framework\ Registry
34+ * @var Registry
2435 */
2536 protected $ _coreRegistry = null ;
2637
@@ -32,30 +43,30 @@ class Items extends \Magento\Sales\Block\Items\AbstractItems
3243 private $ itemsPerPage ;
3344
3445 /**
35- * @var \Magento\Sales\Model\ResourceModel\Order\Item\ CollectionFactory
46+ * @var CollectionFactory
3647 */
3748 private $ itemCollectionFactory ;
3849
3950 /**
40- * @var \Magento\Sales\Model\ResourceModel\Order\Item\ Collection|null
51+ * @var Collection|null
4152 */
4253 private $ itemCollection ;
4354
4455 /**
45- * @param \Magento\Framework\View\Element\Template\ Context $context
46- * @param \Magento\Framework\ Registry $registry
56+ * @param Context $context
57+ * @param Registry $registry
4758 * @param array $data
48- * @param \Magento\Sales\Model\ResourceModel\Order\Item\ CollectionFactory|null $itemCollectionFactory
59+ * @param CollectionFactory|null $itemCollectionFactory
4960 */
5061 public function __construct (
51- \ Magento \ Framework \ View \ Element \ Template \ Context $ context ,
52- \ Magento \ Framework \ Registry $ registry ,
62+ Context $ context ,
63+ Registry $ registry ,
5364 array $ data = [],
54- \ Magento \ Sales \ Model \ ResourceModel \ Order \ Item \ CollectionFactory $ itemCollectionFactory = null
65+ CollectionFactory $ itemCollectionFactory = null
5566 ) {
5667 $ 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);
5970 parent ::__construct ($ context , $ data );
6071 }
6172
@@ -68,19 +79,12 @@ public function __construct(
6879 protected function _prepareLayout ()
6980 {
7081 $ this ->itemsPerPage = $ this ->_scopeConfig ->getValue ('sales/orders/items_per_page ' );
82+ $ this ->itemCollection = $ this ->createItemsCollection ();
7183
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 */
7785 $ pagerBlock = $ this ->getChildBlock ('sales_order_item_pager ' );
7886 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 );
8488 }
8589
8690 return parent ::_prepareLayout ();
@@ -105,7 +109,7 @@ public function isPagerDisplayed()
105109 *
106110 * To be called from templates(after _prepareLayout()).
107111 *
108- * @return \Magento\Framework\ DataObject[]
112+ * @return DataObject[]
109113 * @since 100.1.7
110114 */
111115 public function getItems ()
@@ -123,18 +127,47 @@ public function getItems()
123127 */
124128 public function getPagerHtml ()
125129 {
126- /** @var \Magento\Theme\Block\Html\ Pager $pagerBlock */
130+ /** @var Pager $pagerBlock */
127131 $ pagerBlock = $ this ->getChildBlock ('sales_order_item_pager ' );
128132 return $ pagerBlock ? $ pagerBlock ->toHtml () : '' ;
129133 }
130134
131135 /**
132136 * Retrieve current order model instance
133137 *
134- * @return \Magento\Sales\Model\ Order
138+ * @return Order
135139 */
136140 public function getOrder ()
137141 {
138142 return $ this ->_coreRegistry ->registry ('current_order ' );
139143 }
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+ }
140173}
0 commit comments