Laravel Auto Load More Data on Page Scroll

SHARE :

Laravel Auto Memuat lebih banyak data pada gulir halaman Tak Terbatas dengan ajax jQuery.

Dalam tutorial ini, kami akan memandu Anda tentang cara membuat pemuatan otomatis lebih banyak data di aplikasi laravel  pada gulir halaman menggunakan ajax jQuery.

Jika Anda pernah melihat beberapa situs media sosial atau e-niaga yang menggunakan fungsi Muat Lebih Banyak Data untuk melihat data dinamis.

Fungsionalitas ini memuat data dari database tanpa penyegaran halaman menggunakan AJAX.

Terkadang, Anda perlu memuat lebih banyak data secara otomatis pada gulir halaman tak terhingga di aplikasi laravel.

Jadi, tutorial ini akan membantu Anda tentang cara membuat aplikasi gulir halaman tanpa batas di aplikasi laravel .

Langkah 1 – Instal Aplikasi Laravel

Pada langkah ini, Jalankan perintah berikut di terminal untuk mengunduh atau menginstal aplikasi laravel :

composer create-project --prefer-dist laravel/laravel blog

Langkah 2 – Menghubungkan Aplikasi ke Database

Pada langkah ini, Buka direktori root aplikasi Laravel, temukan file .env dan atur kredensial database sebagai berikut:

DB_CONNECTION=mysql 
 DB_HOST=127.0.0.1 
 DB_PORT=3306 
 DB_DATABASE=here your database name here
 DB_USERNAME=here database username here
 DB_PASSWORD=here database password here

Langkah 3 – Buat Model dan Migrasi

Pada langkah ini, Jalankan perintah berikut di terminal untuk membuat satu model dan nama migrasi Post. Gunakan perintah berikut dan buatlah:

php artisan make:model Post -m

Dalam perintah ini -m dibuat file migrasi

Selanjutnya, buka aplikasi/database/migrasi dan buka file migrasi posting dan tambahkan bidang berikut:

<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePostsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('contacts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('description');
            $table->timestamps();
        });
    }
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('contacts');
    }
}

Setelah itu, jalankan perintah berikut:

php artisan migrate

Perintah ini akan membuat tabel di database Anda.

Langkah 4 – Tambahkan Rute

Pada langkah ini, buka file “web.php”, yang terletak di dalam direktori Routes dan tambahkan rute berikut ke dalam file web.php:

use App\Http\Controllers\PostController;

Route::get('posts', [PostController::class, 'index']);

Langkah 5 – Buat Pengontrol dengan Perintah

Pada langkah ini, jalankan perintah berikut di terminal untuk membuat file nama controller PostController.php:

php artisan make:controller PostController 

Selanjutnya, buka app/http/controller/PostController dan buka PostController di editor apa saja. Dan perbarui kode berikut ke dalam file PostController Anda:

<?php
 
namespace App\Http\Controllers;
 
use Illuminate\Http\Request;
 
use Validator,Redirect,Response;
 
use App\Models\Post;
 
class PostController extends Controller
{
    public function index(Request $request)
    {
        $posts = Post::paginate(8);
        $data = '';
        if ($request->ajax()) {
            foreach ($posts as $post) {
                $data.='<li>'.$post->id.' <strong>'.$post->title.'</strong> : '.$post->description.'</li>';
            }
            return $data;
        }
        return view('posts');
    }
}

Langkah 6 – Buat tampilan bilah

Pada langkah ini, Buat satu nama file blade posts.blade.php. Dan perbarui kode HTML di bawah ini ke file posts.blade.php Anda:

<!doctype html>
<html lang="en">
  <head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <meta name="csrf-token" content="{{ csrf_token() }}">
  <title>Laravel 8 load more page scroll - Tutsmake.com</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
   
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<style>
   .wrapper > ul#results li {
     margin-bottom: 2px;
     background: #e2e2e2;
     padding: 20px;
     width: 97%;
     list-style: none;
   }
   .ajax-loading{
     text-align: center;
   }
</style>
</head>
  
<body>
  
  <div class="container">
   <div class="wrapper">
    <ul id="results"><!-- results appear here --></ul>
     <div class="ajax-loading"><img src="{{ asset('images/loading.gif') }}" /></div>
   </div>
  </div>
</body>
</html>

File tampilan blade ini menampilkan semua posting blog Anda saat Anda menggulir halaman ke bawah.

Selanjutnya, perbarui skrip berikut ke dalam file tampilan blade Anda:

<script>
   var SITEURL = "{{ url('/') }}";
   var page = 1; //track user scroll as page number, right now page number is 1
   load_more(page); //initial content load
   $(window).scroll(function() { //detect page scroll
      if($(window).scrollTop() + $(window).height() >= $(document).height()) { //if user scrolled from top to bottom of the page
      page++; //page number increment
      load_more(page); //load content   
      }
    });     
    function load_more(page){
        $.ajax({
           url: SITEURL + "posts?page=" + page,
           type: "get",
           datatype: "html",
           beforeSend: function()
           {
              $('.ajax-loading').show();
            }
        })
        .done(function(data)
        {
            if(data.length == 0){
            console.log(data.length);
            //notify user if nothing to load
            $('.ajax-loading').html("No more records!");
            return;
          }
          $('.ajax-loading').hide(); //hide loading animation once data is received
          $("#results").append(data); //append data into #results element          
           console.log('data.length');
       })
       .fail(function(jqXHR, ajaxOptions, thrownError)
       {
          alert('No response from server');
       });
    }
</script>

Langkah 7 – Jalankan Server Pengembangan

Pada langkah ini, jalankan perintah php artisan serve pada terminal untuk memulai server pengembangan secara lokal:

php artisan serve

Langkah 8 – Uji Aplikasi Ini

Buka browser dan tekan url berikut di atasnya:

http://127.0.0.1:8000/posts

Kesimpulan

Laravel  ajax infinity memuat lebih banyak pada tutorial contoh gulir halaman, Anda telah belajar bagaimana menerapkan ajax memuat lebih banyak data pada gulir halaman di aplikasi laravel .

OOKINFO

Jasa pembuatan Aplikasi Mobile dan Web. Siap memberikan solusi digital untuk bisnis anda. Tugas Kuliah, Organisasi, Perusahaan, E-Commerce.