jak dodać paginację do kolekcji niestandardowej w Magento 2

17

Pracuję nad niestandardowym modułem. Jak mogę korzystać z domyślnej paginacji Magento w mojej kolekcji niestandardowej, a także ustawić dla niej niestandardowe limity?

Qaisar Satti
źródło
1
Kiedy utworzyłem moduł niestandardowy w Magento2 dla stronicowania i limitów, odsyłam do tych linków ( mage-world.com/blog/… ) i mogę to zrobić.
Arjun,
Czy możesz wyjaśnić, jak zastąpić katalog Magento w celu dodania stronicowania do niestandardowego modułu! powyższy link mam pomysł, chcę zastąpić w module katalogu
Sushivam
@SachinS chudy, mówisz o pasku narzędzi?
Qaisar Satti,
Tak, dokładnie ... Opisałem to, co próbowałem i błąd tutaj ... magento.stackexchange.com/questions/131896/…
Sushivam
@SachinS to, co chcesz osiągnąć za pomocą paska narzędzi i czy rozwiązałeś ten magento.stackexchange.com/questions/131805/…
Satti

Odpowiedzi:

25

zdobądź za to kolekcję

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;
    }

Dodaj podział na strony

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;
}

dodawanie bloku potomnego

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

w pliku phtml

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

Odniesienie

Qaisar Satti
źródło
Pssst: albo $this->getRequest()->getParam('p') ?: 1albo, jeszcze lepiej, $this->getRequest()->getParam('p', 1).
nevvermind
Dostaję element o identyfikatorze już istnieje błąd, niezależnie od tego, co próbuję nazwać blokiem pagera, który tworzę, używając twojego kodu.
LM_Fielding
@LM_Fielding jeszcze nie napotkał tego problemu, ale spróbuj usunąć var/cachei var/generationfolder
Qaisar Satti
Próbowałem dodać go do paska narzędzi na górze i na dole, więc było to dokładnie poprawne.
LM_Fielding
1
@LM_Fielding dodajesz go dwa razy, co powoduje problem.
Qaisar Satti,