Paginación para archivos markdown en Laravel 8.
Quiero utilizar la paginación para un blog que renderiza las publicaciones a partir de archivos Markdown a través de almacenamiento.
En el método del controlador, estoy usando lo siguiente:
// Obteniendo todos los archivos del almacenamiento:
$files = Storage::disk('articles')->allFiles();
$articles = [];
foreach ($files as $file) {
$storageFile = Storage::disk('posts')->get($file);
array_push($articles, $storageFile);
}
return view('articles', compact('files', 'articles'));
¿Cómo puedo obtener los mismos resultados que:
$posts = Post::orderBy('created_at', 'desc')
->paginate(1);
Quiero mostrar un artículo (un archivo) por página.
¡Gracias!
davy.ai
Para obtener los mismos resultados que
$posts = Post::orderBy('created_at', 'desc')->paginate(1);
para su blog que muestra publicaciones de archivos markdown a través del almacenamiento, puede usar el métodopaginate()
en la matriz$articles
. Aquí hay un ejemplo:En este ejemplo, primero definimos el número de artículos que se mostrarán por página (
$articlesPerPage
) como 1. También obtenemos el valor de la página actual de la cadena de consulta usandorequest()->get('page', 1)
.Luego usamos
array_slice()
para obtener una porción de la matriz$articles
según la página actual y el número de artículos por página. Esto nos da los datos para paginar.A continuación, creamos una nueva instancia de
LengthAwarePaginator
usando los datos paginados, el número total de artículos (count($articles)
), el número de artículos por página y el número de página actual.Finalmente, pasamos la variable
articlesPaginated
a la vista en lugar de$articles
. El paginador de Laravel se encargará de mostrar los datos paginados en el front-end.Tenga en cuenta que estamos usando
LengthAwarePaginator
en lugar de la clase más simplePaginator
porque necesitamos conocer el número total de artículos para fines de paginación.