Advertisement
  1. Code
  2. CodeIgniter
Code

Paginado en CodeIgniter: La Guía Completa

by
Difficulty:BeginnerLength:LongLanguages:

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

El beneficio de usar cualquier framework de aplicación web full-stack es que no tienes que preocuparte sobre las tareas comunes como manejo de entrada, validación de formulario y similar, ya que el framework ya proporciona envoltorios para esas características. Así pues, te permite concentrarte en la lógica de negocio de la aplicación en lugar de reinventar la rueda una y otra vez.

El día de hoy, vamos a explorar una importante librería en el framework CodeIgniter---la librería de paginado.

Déjame resaltar los tópicos que vamos a cubrir en el curso de este artículo:

  • Demostración de paginado básico
  • Explorar las opciones de personalización
  • Configuración de paginación

Demostración de Paginación Básica

En esta sección, recorreremos un ejemplo que demuestra el uso de la paginación en CodeIgniter. Es la mejor manera de entender cómo funcionan juntas las cosas.

En nuestro ejemplo, construiremos una lista de usuarios bastante simple en la cuál recogeremos registros de la tabla MySQL usuarios. Para poder ejecutar exitósamente este ejemplo, asegúrate de que tienes los campos uid y uname en tu tabla de usuarios.

Con eso establecido, estamos listos para comenzar.

Continua y crea un archivo controlador controllers/Paging.php con el siguiente contenido.

Después, necesitaremos un archivo modelo models/Users.php que recoja registros de la tabla de usuarios.

Finalmente, creemos un archivo vista views/user_listing.php que muestre el listado de usuarios.

Ahora, continua y accede a nuestra página personalizada en http://your-code-igniter-site/paging/index y ¡deberías ver el listado de usuarios junto con la paginación! Así qué, eso es, ¡lo hicimos! No te preocupes, no te dejaré tan pronto, ya que comenzaremos a disecar cada parte del código ahora.

Comenzaremos con el archivo modelo models/Users.php ya que es algo que será llamado desde nuestros métodos de controlador. Hay dos métodos importantes, get_current_page_records y get_total, que nuestro modelo implementa para poder construir los enlaces de paginación.

Vayamos a través del método get_total. Es usado para contar el número de registros en la tabla de usuarios.

Después. hay un método get_current_page_records.

Hay dos argumentos importantes que deberías notar en el método get_current_page_records. El primer argumento, $limit, es usado para especificar el número de registros que serán regresados durante la ejecución de la consulta. Y el segundo argumento, $start, actúa como el índice de inicio del registro.

Así qué, como puedes ver, dados los valores de $start y $limit podemos recoger registros por página. Esa es la esencia del paginado, ¡y mientras tanto hemos implementado el método más importante de este artículo!

Así qué, ¡ese fue nuestro modelo---simple y elegante!

Continuando, cambiemos nuestra atención al archivo controlador. Continua y toma el código del método constructor.

Para poder usar paginado en CodeIgniter, la primera cosa que necesitas hacer es cargar la librería de paginado. Y podemos hacerlo usando $this->load->library('pagination').

También hemos cargado el ayudante URL para que podamos usar las funciones ayudantes globales proporcionadas por ese ayudante.

Ahora, estamos listos para continuar al corazón de nuestro controlador---el método index.

Para comenzar, nos aseguramos de que la base de datos es cargada apropiadamente. Después de eso, cargamos el modelo Users para que podamos usar los métodos del modelo.

Después, iniciamos un par de variables importantes.

La variable $limit_per_page define el límite por página. Por supuesto, podrías establecerla como desees; está establecida a 1 de momento para propósitos del ejemplo.

La variable $start_index retiene el índice de inicio del registro MySQL. Cuando CodeIgniter construye los enlaces de paginado, este agrega el índice de inicio de la página como el tercer segmento en la URL por defecto. Puedes cambiar este comportamiento por defecto, pero eso es algo que reservaremos para la última sección de este artículo, en donde discutiremos opciones de personalización.

Finalmente, llamamos al método get_total del modelo Users para obtener el total de registros de la tabla de usuarios, y es asignado a la variable $total_records.

Después, recogemos los registros de la página actual usando el método get_current_page_records.

Antes de que podamos continuar y construir enlaces de paginado, necesitamos iniciar la configuración mínima de paginado usando el método initialize de la librería de paginado.

Y ese es el conjunto de parámetros mínimos para construir los enlaces de paginado.

  • base_url: La URL que será usada mientras construimos enlaces de paginado
  • total_rows: Número total de registros
  • per_page: Conteo de registros por página

Finalmente, usamos el método create_links para construir enlaces de paginado.

¡El resto es solo la formalidad para llamar a nuestra vista user_listing y generar la salida! Ejecuta la URL http://your-code-igniter-site/paging/index para ver el listado de usuario junto con los enlaces de paginado.

Así que ese es un ejemplo simple pero útil de paginado a tu disposición que podrías extender para ajustarse a tus requerimientos.

En la siguiente sección, exploraremos cómo podrías personalizar el paginado por defecto en términos de apariencia y funcionalidad.

Explora Opciones de Personalización

En esta sección, exploraremos las opciones disponibles que podrías usar si quisieras personalizar los enlaces de paginado por defecto.

Segmento URI

Aunque la librería de paginado CodeIgniter detecta automáticamente el parámetro relacionado con el paginado desde la URL, podrías definir un valor personalizado si tienes un patrón URL diferente.

Número de Enlaces Dígito

La opción num_links te permite definir el número de enlaces dígito que será mostrado antes y después del número de página activa en los enlaces de paginado.

Número de Página como Segmento URI

Cuando accedes al segmento URI de paginado, es un índice de inicio por defecto. Por ejemplo, si tienes diez registros por página, el segmento de paginado URI es 20 para la tercer página. En su lugar, si quieres mostrar los números reales de página en los enlaces de paginado, puedes establecer use_page_numbers a TRUE.

Por supuesto, necesitas asegurar que puedes calcular el índice de inicio apropiado basado en el número de página que recuperas de la URL.

Preserva Cadena de Consulta

Muy frecuentemente, terminas en la situación en donde quieres preservar parámetros de cadena de consulta que no están relacionados al paginado. Puedes usar la opción reuse_query_string para habilitar esa facilidad.

Estas fueron unas cuántas opciones que podrías usar para alterar la funcionalidad de paginado por defecto. Después, veremos un par de otras opciones que te permitirán alterar la manera en la que se muestran los enlaces de paginado.

Etiqueta Envoltura

Si quieres envolver el código de paginado con cualquier otra etiqueta HTML entonces podrías hacerlo usando las opciones full_tag_open y full_tag_colse.

Podría ser realmente útil si quisieras aplicar estilo personalizado a los enlaces de paginado.

Primero, Último, Siguiente y Previo

Si quieres cambiar el texto que será mostrado para los enlaces primero, último, siguiente y previo, podrías hacer eso también.

También, si quieres envolver esos enlaces individuales con cualquier etiqueta HTML, podrías hacer eso de la misma manera que hice para envolver todo el código de paginado.

Enlace Activo y Número de Enlace

Algunas veces, quieres estilizar el enlace activo de manera diferente. Podrías hacer eso aplicando etiquetas de envoltura como se muestra abajo.

De la misma manera, si quieres envolver enlaces dígito con algo:

Y eso termina la historia de personalización. De hecho, podrías continuar y ver el ejemplo de personalización en http://your-code-igniter-site/paging/custom ¡que ya está incluido en nuestro archivo controlador!

Configuración de Paginado

Ahora estás consciente de la configuración que es requerida para configurar un paginado decente con cualquier listado modelo. Y la mayoría del tiempo, quieres mantenerlo igual a lo largo del sitio. ¿Qué vas a hacer para lograr eso? Podrías estar tentado a copiar el código de configuración y pegarlo en cada acción que requiera la configuración de paginado.

De hecho, hay una mejor manera en la que podrías manejar este escenario. Puedes crear un archivo de configuración de paginado en application/config/pagination.php y usar la variable $config para definir tus ajustes.

Basado en eso, el método revisado de acción index debería lucir así:

Por supuesto, las variables total_rows y base_url cambian de acción a acción, así que necesitas establecerlas explícitamente en cada acción.

Para lograr eso, necesitas cargar la configuración de paginado en primero lugar.

Después, puedes anular los ajustes específicos de la acción.

¡Y terminaste con eso!

Así que esa fue la historia de la configuración de paginado, ¡y eso termina este artículo también!

Conclusión

El día de hoy, recorrimos la librería de paginado en CodeIgniter.

En la primera parte de este artículo, te demostré cómo puedes usar la librería de paginado proporcionando un ejemplo muy simple pero útil.

Seguido de eso, discutimos las opciones de configuración que están disponibles a tu disposición mientras configuras el paginado.

Finalmente, discutimos la configuración de paginado en la última sección.

CodeIgniter es una plataforma PHP poderosa. Sea que estés comenzando o estás comenzando con la siguiente versión, no olvides revisar lo que tenemos disponible para ti, también.

¡Me encantaría conocer tu retroalimentación en la forma de consultas y comentarios usando la sección de abajo!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.