Pregunta

Tengo una serie de colecciones que tienen bloques que generan el contenido para frontend rutas (mi cuenta, funciones frontend).

Tengo que paginar algunos de estos. Sé que existen métodos de paginación en las colecciones, pero ¿hay alguna manera de manejar la parte de consulta también? Odio reinventar la rueda ...

¿Fue útil?

Solución

En realidad es bastante simple.

En el bloque principal que llama a su colección para renderizar, agregue lo siguiente:

protected function _prepareLayout()
{
    parent::_prepareLayout();

    $pager = $this->getLayout()->createBlock('page/html_pager', 'your.custom.blockname.pager')
        ->setCollection($this->getCollection()); //call your own collection getter here, name it something better than getCollection, please; *or* your call to getResourceModel()
    $this->setChild('pager', $pager);
    return $this;
}

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

¡Por defecto, esto limitará su colección a 10 en el tiempo! ¡¡Dulce!!

Luego, desde su plantilla PhTML asociada a su colección, agregue los controles del buscapersonas haciendo eco de la salida de nuestro otro método, getPagerHtml:

<?php echo $this->getPagerHtml(); ?>

Fuente: Experiencia. Y también, el sales/order_history Bloque en Magento.

Otros consejos

Usé esta clase de bloque interior (es mage_catalog_block_navigation):

$pager = new Mage_Page_Block_Html_Pager();
$pager->setLimit(100)->setCollection(...getCollection());
$this->setChild('pager', $pager);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top