come aggiungere l'impaginazione sulla raccolta personalizzata in Magento 2


17

Sto lavorando su un modulo personalizzato. Come posso utilizzare l' impaginazione magento predefinita con la mia raccolta personalizzata e anche impostare limiti personalizzati?


1
Quando ho creato il mio modulo personalizzato in magento2 per impaginazione e limiti ho fatto riferimento a questi link ( mage-world.com/blog/… ) e ho potuto farlo.
Arjun,

Potresti spiegare come sovrascrivere il catalogo Magento per aggiungere l'impaginazione al modulo personalizzato! il link sopra ho avuto qualche idea, voglio scavalcare il modulo del catalogo
Sushivam

@SachinS mi stai parlando di una barra degli strumenti?
Qaisar Satti,

Sì, esattamente ... Ho descritto quello che ho provato e l'errore qui ... magento.stackexchange.com/questions/131896/…
Sushivam,

@SachinS cosa vuoi ottenere con la barra degli strumenti e hai risolto questo magento.stackexchange.com/questions/131805/…
Qaisar Satti il

Risposte:


25

ottenere raccolta per quello

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

Aggiungi impaginazione

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

aggiunta del blocco figlio

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

nel file phtml

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

Riferimento


Pssst: o $this->getRequest()->getParam('p') ?: 1o, meglio ancora, $this->getRequest()->getParam('p', 1).
nevvermind

Ottengo l'elemento con ID esiste già un errore per qualunque cosa provo a nominare il blocco cercapersone che sto creando usando il tuo codice.
LM_Fielding

@LM_Fielding non ha ancora affrontato questo problema, ma prova a eliminare var/cachee var/generationcartella
Qaisar Satti,

Stavo cercando di aggiungerlo per una barra degli strumenti in alto e in basso, quindi era esattamente corretto.
LM_Fielding,

1
@LM_Fielding lo stai aggiungendo due volte per causare il problema.
Qaisar Satti,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.