Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher |finished | checked

Laravel pagination – Cómo hacer la paginación en Laravel?

En Laravel la paginación y viene directamente echa como quien dice, la paginación en Laravel es muy fácil de usar directamente tenemos que usar el método paginate() el cual lo podemos usar en query builder o Eloquent.

Como parámetro, el método de paginación recibe la cantidad de elementos que queremos que se muestren por página.

app/Http/Controllers/UserController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\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(15);

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

Para mostrar la paginación se usa la siguiente línea en la vista

{{ $users->links() }}

A la paginación también le podemos decir que sea simple, es decir que sea Anterior y siguiente con el método simplePaginate. El método simplePaginate también tiene como parámetro la cantidad de elementos a desplegar.

Paginación en Eloquent

Veamos un ejemplo de paginación en Eloquent. Si cambiamos el ejemplo anterior borrando la línea $users = DB::table('users')->paginate(15); y cambiamos por esta.

$users = App\User::paginate(15);

Nos funcionará. Vea que pagination es solo el paginado y va luego de las operaciones que queramos hacerle, por ejemplo si quiero ver todos los usuarios que tengan el nombre Marcos.

$user= App\User::where("name","LIKE","Marcos%")->paginate(10);

La paginación en Laravel usa Bootstrap, pero ¿qué pasa si nosotros no estamos usando Bootstrap o queremos modificarla de algún modo su forma visual?

Paginación Customizada

Para eso podemos crear nuestra paginación customizada.

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

Luego de aplicar este comando en la línea de comandos iremos a resource > view > vendor > pagination ahí es donde ha creado nuestra vista del pagination. De hecho se han creado las vistas de las listas de paginación (default es el pagination por defecto)

verá algo como esto

resource/view/vendor/pagination
@if ($paginator->hasPages())
    <ul class="pagination" role="navigation">
        {{-- Previous Page Link --}}
        @if ($paginator->onFirstPage())
            <li class="disabled" aria-disabled="true" aria-label="@lang('pagination.previous')">
                <span aria-hidden="true">‹</span>
            </li>
        @else
            <li>
                <a href="{{ $paginator->previousPageUrl() }}" rel="prev" aria-label="@lang('pagination.previous')">‹</a>
            </li>
        @endif

        {{-- Pagination Elements --}}
        @foreach ($elements as $element)
            {{-- "Three Dots" Separator --}}
            @if (is_string($element))
                <li class="disabled" aria-disabled="true"><span>{{ $element }}</span></li>
            @endif

            {{-- Array Of Links --}}
            @if (is_array($element))
                @foreach ($element as $page => $url)
                    @if ($page == $paginator->currentPage())
                        <li class="active" aria-current="page"><span>{{ $page }}</span></li>
                    @else
                        <li><a href="{{ $url }}">{{ $page }}</a></li>
                    @endif
                @endforeach
            @endif
        @endforeach

        {{-- Next Page Link --}}
        @if ($paginator->hasMorePages())
            <li>
                <a href="{{ $paginator->nextPageUrl() }}" rel="next" aria-label="@lang('pagination.next')">›</a>
            </li>
        @else
            <li class="disabled" aria-disabled="true" aria-label="@lang('pagination.next')">
                <span aria-hidden="true">›</span>
            </li>
        @endif
    </ul>
@endif

Aquí puede modificar como se verá su pagination como quiera y sin problemas

¿Luego de cambiar mi paginación como la uso?

Pues la forma de usar es bastante fácil, recuerda que en la view hacemos $data->link, pues en este caso le pasaremos por parámetro el lugar donde está nuestra view {{ $data->links('vendor.pagination.default') }}

¿Deseas que se le agregue algo más a este artículo? Puedes hacérmelo saber en Twitter.

Category: laravel
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Last 4 post in same category