cara menambahkan pagination pada koleksi khusus di Magento 2

17

Saya sedang mengerjakan modul khusus. Bagaimana saya bisa menggunakan pagination magento default dengan koleksi khusus saya dan juga menetapkan batas khusus untuk itu?

Qaisar Satti
sumber
1
Ketika saya membuat modul khusus saya di magento2 untuk pagination & limit, saya merujuk tautan ini ( mage-world.com/blog/… ) dan saya bisa menyelesaikannya.
Arjun
Bisakah Anda jelaskan tentang cara mengganti Katalog Magento untuk menambahkan pagination ke modul khusus! tautan di atas saya punya beberapa ide, saya ingin menimpa dalam modul Katalog
Sushivam
@SachinS i kurus Anda berbicara tentang toolbar?
Qaisar Satti
Ya persis ... Saya telah menggambarkan apa yang saya coba dan galat di sini ... magento.stackexchange.com/questions/131896/…
Sushivam
@SachinS apa yang ingin Anda capai dengan toolbar dan apakah Anda menyelesaikan magento.stackexchange.com/questions/131805/…
Qaisar Satti

Jawaban:

24

dapatkan koleksi untuk itu

public function getNews()
    {
      //get values of current page
        $page=($this->getRequest()->getParam('p'))? $this->getRequest()->getParam('p') : 1;
    //get values of current limit
        $pageSize=($this->getRequest()->getParam('limit'))? $this->getRequest()->getParam('limit') : 1;


        $newsCollection = $this->newscollectionFactory->create();
        $newsCollection->addFieldToFilter('is_active',1);
        $newsCollection->setOrder('title','ASC');
        $newsCollection->setPageSize($pageSize);
        $newsCollection->setCurPage($page);
        return $newsCollection;
    }

Tambahkan pagination

protected function _prepareLayout()
{
    parent::_prepareLayout();
    $this->pageConfig->getTitle()->set(__('News'));


    if ($this->getNews()) {
        $pager = $this->getLayout()->createBlock(
            'Magento\Theme\Block\Html\Pager',
            'test.news.pager'
        )->setAvailableLimit(array(5=>5,10=>10,15=>15))->setShowPerPage(true)->setCollection(
            $this->getNews()
        );
        $this->setChild('pager', $pager);
        $this->getNews()->load();
    }
    return $this;
}

menambahkan blok anak

public function getPagerHtml()
{
    return $this->getChildHtml('pager');
}

dalam file phtml

    <?php if ($block->getPagerHtml()): ?>
        <div class="order-products-toolbar toolbar bottom"><?php echo $block->getPagerHtml(); ?></div>
    <?php endif ?>

Referensi

Qaisar Satti
sumber
Pssst: salah satu $this->getRequest()->getParam('p') ?: 1atau, lebih baik lagi $this->getRequest()->getParam('p', 1),.
nevvermind
Saya mendapatkan elemen dengan id sudah ada kesalahan untuk apa pun yang saya coba beri nama pager blok yang saya buat menggunakan kode Anda.
LM_Fielding
@LM_Fielding belum menghadapi masalah ini tetapi coba hapus var/cachedan var/generationfolder
Qaisar Satti
Saya mencoba menambahkannya untuk bilah alat di bagian atas dan di bagian bawah, jadi itu benar.
LM_Fielding
1
@LM_Fielding Anda menambahkannya dua kali yang menyebabkan masalah.
Qaisar Satti