Tengo poco incursionando en el Zend Framework y tuve la necesidad, como casi siempre, de paginar las consultas de la base de datos, investigando me di cuenta de que ZF ya cuenta con ésta característica y me puse manos a la obra.
Primero que nada el árbol de mi sistema lo tengo de la siguiente manera:
Si eres nuevo como yo aquí está una excelente guia para iniciar Desarrolo de aplicaciones con Zend Framework o bien Multimedia: Tutorial Screencasts (éste último videos en inglés).
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): ?> <?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; ?>
Ésta entrada la hice basándome en la documentación oficial de Zend Framework, espero les sea de utilidad :-).
Después de manejar varios IDEs ó editores de texto para mi trabajo diario como: Dreamweaver…
Muy interesante video sobre la obsolencia programada. [youtube QosF0b0i2f0]
Bien como el título lo dice, para mi es una lata estar cambiandome de cuentas…
Google está lanzando el plugin que permite el uso de video y voz en el…
Hoy se cierra una etapa de mi vida, un ciclo que en realidad no esperaba…