ahmadajah03 Tue Oct 2020 2 years ago

Contoh Custom Pagination View di Laravel

laravel default juga menyediakan tampilan pagination menggunakan desain bootstrap seperti tombol berikutnya dan sebelumnya serta halaman nomor dengan link. tapi ini sangat comman dan umumnya digunakan oleh sebagian besar pengembang. Jika Anda ingin mengubahnya menggunakan kelas Presenter dari laravel. Anda dapat mengatur tampilan kustom Anda sendiri untuk tata letak pagination.

Di bawah ini saya berikan contoh saya menambahkan tombol pertama, terakhir, berikutnya dan sebelumnya dan banifit utama adalah Anda dapat dengan mudah mengubah tampilan dan tautan itu. jadi mari kita lihat pratinjau gambar tata letak pagination.

Pratinjau:

Jadi, pertama-tama buat folder baru "Pagination" app/Pagination dan di dalam folder ini buat satu file "HDPresenter.php" app/Pagination/HDPresenter.php . file class ini akan menghasilkan tata letak khusus untuk penomoran halaman. di file kelas ini Anda dapat menambahkan kelas Anda sendiri, div, id dll. Sangat mudah untuk memahami cara kerjanya. jadi letakkan kode di bawah ini di file itu.

app/Pagination/HDPresenter.php

namespace App\Pagination;
use Illuminate\Pagination\BootstrapThreePresenter;


class HDPresenter extends BootstrapThreePresenter {


    public function render()
    {
        if ($this->hasPages()) {
            return sprintf(
                '<div class="pagi-custom"><div class="pull-left">%s %s</div> <div class="pull-right">%s %s</div></div>',
                $this->getFirst(),
                $this->getButtonPre(),
                $this->getButtonNext(),
                $this->getLast()
            );
        }
        return "";
  }

    public function getLast()
    {
        $url = $this->paginator->url($this->paginator->lastPage());
        $btnStatus = '';

        if($this->paginator->lastPage() == $this->paginator->currentPage()){
            $btnStatus = 'disabled';
        }
        return $btn = "<a href='".$url."'><button class='btn btn-success ".$btnStatus."'>Last <i class='glyphicon glyphicon-chevron-right'></i></button></a>";
    }

    public function getFirst()
    {
        $url = $this->paginator->url(1);
      $btnStatus = '';

        if(1 == $this->paginator->currentPage()){
            $btnStatus = 'disabled';
        }
        return $btn = "<a href='".$url."'><button class='btn btn-success ".$btnStatus."'><i class='glyphicon glyphicon-chevron-left'></i> First</button></a>";
  }

    public function getButtonPre()
    {
        $url = $this->paginator->previousPageUrl();
      $btnStatus = '';

        if(empty($url)){
            $btnStatus = 'disabled';
        }
        return $btn = "<a href='".$url."'><button class='btn btn-success ".$btnStatus."'><i class='glyphicon glyphicon-chevron-left pagi-margin'></i><i class='glyphicon glyphicon-chevron-left'></i> Previous </button></a>";
  }

    public function getButtonNext()
    {
        $url = $this->paginator->nextPageUrl();
        $btnStatus = '';


        if(empty($url)){
            $btnStatus = 'disabled';
        }
        return $btn = "<a href='".$url."'><button class='btn btn-success ".$btnStatus."'>Next <i class='glyphicon glyphicon-chevron-right pagi-margin'></i><i class='glyphicon glyphicon-chevron-right'></i></button></a>";
    }

}

Sekarang, bagaimana menggunakan class ini dalam file blade laravel, jadi lihat file berikut bagaimana memperluas kelas ini pada fungsi kelas pagination.

Dalam file Blade

@extends('layouts.app')
 
@section('content')
<div class="container">
    <table class="table table-bordered">
        <tr>
            <th>Title</th>
            <th>Description</th>
        </tr>
    @foreach ($posts as $post)
    <tr>
        <td>{{ $post->title }}</td>
        <td>{{ $post->description }}</td>
    </tr>
    @endforeach
    </table>
    {!! with(new App\Pagination\HDPresenter($posts))->render(); !!}
</div>
@endsection

 

laravel Custom Pagination View Laravel Example