Cómo agregar paginación en una colección personalizada en Magento 2


17

Estoy trabajando en un módulo personalizado. ¿Cómo puedo usar la paginación predeterminada de magento con mi colección personalizada y también establecer límites personalizados para eso?


1
Cuando creé mi módulo personalizado en magento2 para paginación y límites, referí este enlace ( mage-world.com/blog/… ) y pude hacerlo.
— Arjun

¡Podría explicar cómo anular el Catálogo de Magento para agregar paginación al módulo personalizado! el enlace de arriba tengo una idea, quiero anular en el módulo Catálogo
— Sushivam

@SachinS creo que estás hablando de la barra de herramientas?
— Qaisar Satti

Sí exactamente ... he descrito lo que probé y error aquí ... magento.stackexchange.com/questions/131896/…
— Sushivam

@SachinS lo que quieres lograr con la barra de herramientas y resolviste
— Qaisar Satti

Respuestas:


24

obtener la colección para eso

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

Agregar paginación

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

agregando el bloque hijo

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

en archivo phtml

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

Referencia


Pssst: o bien $this->getRequest()->getParam('p') ?: 1o, mejor aún, $this->getRequest()->getParam('p', 1).
— nevvermind

Obtengo el elemento con id ya existe un error para lo que sea que intente nombrar el bloque de buscapersonas que estoy creando usando su código.
— LM_Fielding

@LM_Fielding aún no se enfrentó a este problema, pero intente eliminar var/cachey var/generationcarpeta
— Qaisar Satti

Intenté agregarlo para una barra de herramientas en la parte superior e inferior, por lo que era exactamente correcto.
— LM_Fielding

1
@LM_Fielding lo está agregando dos veces, lo que está causando el problema.
— Qaisar Satti
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.