Zend – Paginar resultados
Según vallamos insertando datos llegara un momento en que tengamos demasiados, como para poderlos mostrar de una vez, y si lo hacemos sobrecargaríamos demasiado la pagina, Zend también ha pensado en ello, y nos pone a nuestra disposición su Paginator
Podemos ver todas las Herramientas que tiene Zend en:
http://framework.zend.com/manual/en/
Concretamente vamos a hablar del paginador, así que iremos a:
http://framework.zend.com/manual/en/zend.paginator.usage.html
Si bajamos hasta aproximadamente el centro de la pagina, veremos un ejemplo que se llama Search Paginator, es el mas común y el que vamos a usar en nuestro ejemplo, aunque podemos coger cualquier otro.
Lo primero que necesitaremos sera crear la vista del paginador, para ello crearemos una carpeta con el nombre Paginador, dentro de: application/views/scripts
y dentro de paginador un nuevo archivo llamado items.phtml, en el que pegaremos el código de la pagina de zend; este es el que nosotros hemos elegido:
<?php if ($this->pageCount): ?><div class=«paginationControl»>
<!– Previous page link –>
<?php if (isset($this->previous)): ?> <a href=«<?php echo $this->url(array(‘page’ => $this->previous)); ?>»>
< Previous
</a> |
<?php else: ?> <span class=«disabled»>< Previous</span> |
<?php endif; ?>
<!– Numbered page links –>
<?php foreach ($this->pagesInRange as $page): ?> <?php if ($page != $this->current): ?> <a href=«<?php echo $this->url(array(‘page’ => $page)); ?>»>
<?php echo $page; ?> </a> |
<?php else: ?> <?php echo $page; ?> |
<?php endif; ?><?php endforeach; ?>
<!– Next page link –>
<?php if (isset($this->next)): ?> <a href=«<?php echo $this->url(array(‘page’ => $this->next)); ?>»>
Next >
</a>
<?php else: ?> <span class=«disabled»>Next ></span>
<?php endif; ?></div>
<?php endif; ?>Ahora que ya tenemos la vista creada, empezaremos a decirle a nuestra aplicación que nos valla paginando los datos, para ello iremos al controlador
application/controllers, y abriremos TablaPruebaController.php, y buscaremos la funcion mostrartodoAction, y sustituiremos sus datos por los de a continuación:public function mostrartodoAction() { $model = new Application_Model_PruebaZF(); $TablaPrueba = $model -> ObtenerTodo(); Zend_View_Helper_PaginationControl::setDefaultViewPartial(‘paginador/items.phtml’); $paginador = Zend_Paginator::factory($TablaPrueba); if ($this->_hasParam(‘page’)){ $paginador->setCurrentPageNumber($this->_getParam(‘page’)); } $this->view->paginador=$paginador; }
En donde el pasamos la ruta de la vista que hemos creado, y le preguntamos si nos viene el parámetro page, en caso afirmativo le decimos a la vista que la pagina actual es la que viene por dicho parámetro
El siguiente paso lo haremos en nuestra vista; por lo que iremos hasta application/views/scripts/tablaprueba y abriremos mostrartodo.phtml
Deberemos sustituir las lineas 13 y 14
if(count($this->TablaPrueba)>0){
foreach ($this->TablaPrueba as $datos) {por las siguientes:
if(count($this->paginador)>0){
foreach ($this->paginador as $datos) {Simplemente llamamos al paginador, en lugar de a los datos de la tabla; al final del documento deberemos pegar también esto:
<?php
if(count($this->paginador)){
echo $this->paginador;
}
?>Con esto ya tenemos nuestro paginador funcionando
Apasionado de la montaña, del SEO y la programación a partes iguales, llevo más de 20 años trabajando en distintos sectores, pero siempre enfocado a la web, si quieres saber más de mí, sigue el enlace.