Home | Clases | Creación de un CMS en PHP con Laravel | Paginación de noticias

Paginación de noticias


Introducción

A medida que vayamos creando noticias, vamos a necesitar implementar un sistema de paginación.


NoticiaController

Laravel nos da la solución de una manera sencilla, simplemente utilizando el método paginate() dentro de una query (o el método simplePaginate() si solo necesitamos los enlaces de anterior y siguiente.

En ambos casos, incluiremos como parámetro el número de resultados que queramos mostrar en cada hoja, si bien según su API podríamos incluir los siguientes:

paginate(int $perPage = null, array $columns = ['*'], string $pageName = 'page', int|null $page = null)

  • int $perPage: Número de elementos por página.

  • array $columns: Columnas a mostrar (por defecto todas).

  • string $pageName: Nombre de la variable para el GET (por defecto page).

  • int|null $page: Página actual.


En nuestro caso, modificaríamos el método index() de NoticiaController de la siguiente forma:



NOTA: Si estás extendiendo NoticiaController desde Controller y no desde AppController según el ejercicio propuesto, Laravel te exige que el método index() de Controller que estás extendiendo también reciba el parámetro Request $request, en cuyo caso deberás además hacer uso de dicho namespace (use Illuminate\Http\Request). Este es un ejemplo de por qué es mejor dejar Controller sin métodos y extender todos los controladores desde ese.


Vista de listado de noticias

Una vez que en el método del controlador estamos utilizando el método paginate(), en la vista asociada al mismo podemos utilizar diferentes métodos para mostrar los enlaces a las diferentes páginas.

Todos ellos están definidos en Paginator Instance Methods, pero lo más relevantes son:

  • $results->count(): Número de elementos en la página actual.

  • $results->items(): Elementos en la página actual.

  • $results->total(): Número de elementos totales.

  • $results->currentPage(): Número de página actual.

  • $results->previousPageUrl(): Enlace a la página anterior.

  • $results->nextPageUrl(): Enlace a la página siguiente.

  • $results->url($page): Enlace a una página especificada.


De este modo, podríamos modificar el listado de noticias (archivo resources/views/admin/noticias/index.php) de la siguiente forma:




Hoja de estilos (public/css/admin.css)

Para finalizar y dar estilo a los enlaces de paginación, solo nos quedaría añadir al final de nuestros estilos lo siguiente:





Ejercicio propuesto

  • Modifica el listado de usuarios para que también incluya paginación.




Fecha de publicación: 24/05/2019
Asignaturas: desarrollo web en entorno servidordespliegue de aplicaciones web
Temas: blog gestor de contenidos laravel php css jquery
Utilizamos cookies propias y de terceros para mejorar su experiencia en la navegación. Al seguir navegando entendemos que acepta su uso.
Si lo desea, consulte nuestras políticas de privacidad y cookies
ENTENDIDO
[X] Cerrar

Contacta conmigo


[X] Cerrar

Acceso alumnos