Cara Membuat Paginasi di Laravel 8


Setelah belajar crud di laravel 8 kemudian juga tentang bagaimana menggunakan seeder dan faker, maka langkah selanjutnya adalah belajar membuat paginasi pada laravel. Secara sederhana paginasi ini merupkan sebuah cara untuk membagi konten/data menjadi beberapa halaman atau bagian.

Sebelumnya saya asumsikan disini bahwa Anda sudah memiliki data yang akan di paginasikan menggunakan fitur pagination dari laravel, dan disini saya akan menggunakan/melanjutkan contoh kode pada tutorial sebelumnya yaitu dari contoh sederhana crud laravel 8.


Berikut ini Cara Membuat Paginasi di Laravel 8

  1. Buat controller masing – masing atau buat controller baru kemudian pada controller buat function seperti berikut
      
      public function index()
        {
            $pegawai = DB::table('pegawai')->paginate(10);
            //menampilkan data sebanyak 10 perhalaman
            return view('pegawai_table',['pegawai'=>$pegawai]);
        }
      
      
  2. Sebelum menambahkan paginasinya, disini kita akan menggunakan paginasi bootstrap
  3. Buka file RouteServiceProvider.php pada folder app/Providers kemudian panggil kode paginasi dan use bootstrap seperti contoh berikut :
      
      <?php
    
    namespace App\Providers;
    
    use Illuminate\Cache\RateLimiting\Limit;
    use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\RateLimiter;
    use Illuminate\Support\Facades\Route;
    //tambahkan paginasi
    use Illuminate\Pagination\Paginator;
    
    class RouteServiceProvider extends ServiceProvider
    {
        /**
         * The path to the "home" route for your application.
         *
         * This is used by Laravel authentication to redirect users after login.
         *
         * @var string
         */
        public const HOME = '/home';
    
        /**
         * The controller namespace for the application.
         *
         * When present, controller route declarations will automatically be prefixed with this namespace.
         *
         * @var string|null
         */
        // protected $namespace = 'App\\Http\\Controllers';
    
        /**
         * Define your route model bindings, pattern filters, etc.
         *
         * @return void
         */
        public function boot()
        {
        
            Paginator::useBootstrap(); //gunakan bootstrap
            
            $this->configureRateLimiting();
    
            $this->routes(function () {
                Route::prefix('api')
                    ->middleware('api')
                    ->namespace($this->namespace)
                    ->group(base_path('routes/api.php'));
    
                Route::middleware('web')
                    ->namespace($this->namespace)
                    ->group(base_path('routes/web.php'));
            });
        }
    
        /**
         * Configure the rate limiters for the application.
         *
         * @return void
         */
        protected function configureRateLimiting()
        {
            RateLimiter::for('api', function (Request $request) {
                return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip());
            });
        }
    }
    
      
      
  4. Buat file baru pada folder resources/views dengan nama misal pegawai_table.blade.php kemudian kodenya seperti berikut:
      
      <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<meta name="viewport" content="width=device-width, initial-scale=1">
    	<title> Daftar Pegawai</title>
    	<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.0.0/dist/css/bootstrap.min.css">
    </head>
    <body>
    
    	<div class="container">
    		<h3 class="text-center">Data Pegawai</h3>
    			<div class="container-fluid">
    				<div class="row">
    					<table class="table table-bordered table-striped table-hover">
    						
    							<tr>
    								<th>ID</th>
    								<th>Nama</th>
    								<th>Jabatan</th>
    								<th>Umur</th>
    								<th>Alamat</th>
    								<th>Aksi</th>
    							</tr>
    							@foreach($pegawai as $data)
    							<tr>
    								<td>{{$data->id}}</td>
    								<td>{{$data->nama_lengkap}}</td>
    								<td>{{$data->jabatan}}</td>
    								<td>{{$data->umur}}</td>
    								<td>{{$data->alamat}}</td>
    								<td><a href="/pegawai/edit/{{$data->id}}">Edit</a> / <a href="/pegawai/delete/{{$data->id}}">Delete</a></td>
    							</tr>
    							@endforeach
    							<tr>
    								<td colspan="6"><a href="/pegawai/create">Tambah Pegawai</a></td>
    							</tr>
    					</table>
    
    					
    					
    						<p>Halaman : {{$pegawai->currentPage()}} / Jumlah Data : {{$pegawai->total()}} / Data perhalaman :{{$pegawai->perPage()}}<br/></p>	
    				</div>
    				
    			
    
    
    
    				<div class="d-flex">
    				    <div class="mx-auto">
    				    	{{$pegawai->links()}}
    					</div>
    				</div>
    			</div>
    	</div>
    
    
    </body>
    </html>
      
      
Jika berhasil, maka tampilan paginasi halamannya akan terlihat seperti berikut :
cara membuat paginasi di laravel 8



Pada saat menggunakan paginasi pada laravel, ada beberapa opsi atau fungsi yang bisa diakses seperti yang sudah dicontoh pada kode pegawai_table.blade.php diatas, diantaranya :
  1. links() untuk menampilkan penomoran/paginasi halaman
  2. currentPage() untuk menampilkan halaman aktif sekarang
  3. total() untuk menampilkan total halaman
  4. perPage() untuk menampilkan data per halaman

0 Response to "Cara Membuat Paginasi di Laravel 8"

Post a Comment

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin