Blog de programación, errores, soluciones

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 un query builder o un eloquent.

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

<?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 paginacion se usa la siguiente lina 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 paginacion en Eloquent. Si cambiamos el ejemplo anterior borrando la linea $users = DB::table(‘users’)->paginate(15); y cambiamos por esta.

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

Nos funcionara. Vea que pagination es solo el paginado y va luego de las operaciones que querramos 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 que pasa si nosotros no estamos usando bootstrap o queremos modificarla de algún modo su forma visual?

Para eso podemos crear nuestra paginacion customisada.

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

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

vera algo como esto

@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 vera su pagination como quiera y sin problemas

Luego de cambiar mi paginación como la uso?

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

Deseas que se le agregue algo mas a este articulo ? no dudes en comentar

Ayudame: Por favor deja un comentario antes de irte, tu opinión es bienvenida. Si te gusta el contenido comparte.