Primero que nada el árbol de mi sistema lo tengo de la siguiente manera:
- App
- application
- controllers
- models
- views
- library
- Zend
- public
- images
- scripts
- styles
- application
Primero cargamos las clases que necesitamos en el Bootstrap (archivo de arranque de configuración):
En mi caso hice una tabla llamada productos donde contiene una columna llamada “nombre_producto”, para esto agregamos nuestra tabla productos en la carpeta models/Productos.php con lo siguiente:
<?php
class Producto extends Zend_Db_Table
{
protected $_name = 'productos';
}
?>Creamos nuestro controlador en application/controllers/indexController.php y quedaría de la siguiente manera:<?php
class IndexController extends Zend_Controller_Action
{
public function indexAction()
{
Zend_Loader::loadClass('Producto');
$producto = new Producto();
// obtenemos la página actual
$page = $this->_getParam('page', 1);
// número de registros a mostrar por página
$registros_pagina = 20;
// número máximo de páginas a mostrar en el paginador
$rango_paginas = 10;
$productos = $producto->fetchAll()->toArray();
$paginador = Zend_Paginator::factory($productos);
$paginador->setItemCountPerPage($registros_pagina)
->setCurrentPageNumber($page)
->setPageRange($rango_paginas);
$this->view->productos = $paginador;
}
}
?>Creamos el archivo en el cual se mostrará nuestra información en application/views/index/index.phtml:<?php echo $this->paginationControl($this->productos,'Sliding', 'index/pagination/pagination_control.phtml'); ?> <table> <tr> <td>Nombre Producto</td> </tr> <?php foreach($this->productos as $producto): ?> <tr> <td><?php echo $producto['nombre_producto']; ?></td> </tr> </table> <?php endforeach; ?>Por último añadimos el pagination control, yo lo coloqué en application/views/index/pagination/pagination_control.phtml, aquí puedes encontrar otros dos tipos o bien crear el tuyo propio:
<?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):
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; ?>Ésta entrada la hice basándome en la documentación oficial de Zend Framework, espero les sea de utilidad :-).