Buscar..


Paginación en Laravel

En otros marcos de paginación es el dolor de cabeza. Laravel lo hace fácil, puede generar paginación al agregar algunas líneas de código en Controlador y Ver.

Uso básico

Hay muchas formas de paginar elementos, pero la más simple es usar el método paginate en el generador de consultas o una consulta de Eloquent . Laravel out of the box se encarga de establecer el límite y la compensación en función de la página actual que está viendo el usuario. De forma predeterminada, la página actual es detectada por el valor de? Argumento de cadena de consulta de página en la solicitud HTTP. Y seguro, Laravel detecta este valor automáticamente y lo inserta en los enlaces generados por el paginador.

Ahora digamos que queremos llamar al método paginate en la consulta. En nuestro ejemplo, el argumento pasado para paginar es el número de elementos que le gustaría mostrar "por página". En nuestro caso, digamos que queremos mostrar 10 artículos por página.

<?php

namespace App\Http\Controllers;

use DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show all of the users for the application.
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::table('users')->paginate(10);

        return view('user.index', ['users' => $users]);
    }
}

Nota: Actualmente, las operaciones de paginación que usan una instrucción groupBy no pueden ejecutarse de manera eficiente por Laravel. Si necesita usar un groupBy con un conjunto de resultados paginado, se recomienda que consulte la base de datos y cree un paginador manualmente.

Paginación simple

Digamos que solo desea mostrar los enlaces Siguiente y Anterior en su vista de paginación. Laravel te ofrece esta opción utilizando el método simplePaginate .

$users = DB::table('users')->simplePaginate(10);

Visualización de resultados en una vista

Ahora vamos a mostrar la paginación a la vista. En realidad, cuando se llama a la paginate o simplePaginate métodos de consulta elocuente, recibirá una instancia paginador. Cuando se llama al método Illuminate\Pagination\LengthAwarePaginator , recibe una instancia de Illuminate\Pagination\LengthAwarePaginator , mientras que cuando llama al método simplePaginate , recibe una instancia de Illuminate\Pagination\Paginator . Estas instancias / objetos vienen con varios métodos que explican el conjunto de resultados. Además, además de estos métodos de ayuda, las instancias del paginador son iteradores y se pueden enlazar como una matriz.

Una vez que haya recibido los resultados, puede representar fácilmente los enlaces de la página utilizando blade

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>

{{ $users->links() }}

El método de links procesará automáticamente los enlaces a otras páginas en el conjunto de resultados. Cada uno de estos enlaces contendrá el número de página específico, es decir, la variable de cadena de consulta de la ?page . El HTML generado por el método de enlaces es perfectamente compatible con el marco CSS de Bootstrap.

Cambio de vistas de paginación

Mientras usa la paginación de laravel, puede usar sus propias vistas personalizadas. Por lo tanto, cuando llame al método de enlaces en una instancia de paginador, pase el nombre de la vista como primer argumento al método como:

{{ $paginator->links('view.name') }}

o

Puede personalizar las vistas de paginación exportándolas a su directorio de resources/views/vendor utilizando el comando vendedor: publish:

php artisan vendor:publish --tag=laravel-pagination

Este comando colocará las vistas en el directorio resources/views/vendor/pagination . El archivo default.blade.php dentro de este directorio corresponde a la vista de paginación predeterminada. Edite este archivo para modificar el HTML de la paginación.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow