In diesem Tutorial erfahren Sie, wie Sie mit Ajax in Laravel 10 eine Paginierung erstellen. Dieses Tutorial zeigt Ihnen Schritt für Schritt, wie Sie ein Paginierungssystem erstellen, das Daten dynamisch lädt, ohne die Seite zu aktualisieren.
Um eine Paginierung mit Ajax in Laravel 10 zu erstellen, führen wir die folgenden Schritte aus
Schritt 1: Installieren Sie Laravel 10
In diesem Schritt installieren wir Laravel 10 mit dem folgenden Befehl.
composer create-project --prefer-dist laravel/laravel laravel_10_ajax_pagination_example
Schritt 2: Datenbank konfigurieren
Jetzt richten wir die Datenbankkonfiguration für die .env- Datei ein, wie Datenbankname, Benutzername und Passwort.
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laravel_10_example
DB_USERNAME=root
DB_PASSWORD=root
Schritt 3: Route erstellen
Dann fügen wir Routen zur web.php- Datei hinzu. Fügen Sie dieser Datei also den folgenden Code hinzu.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\PaginationController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::controller(PaginationController::class)->group(function(){
Route::get('pagination', 'index');
Route::get('pagination/ajax', 'paginationAjax');
});
Schritt 4: Controller erstellen
In diesem Schritt erstellen wir mit dem folgenden Befehl eine PaginationController.php- Datei. Also der folgende Befehl an das Terminal.
php artisan make:controller PaginationController
app/Http/Controllers/PaginationControllers.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
class PaginationController extends Controller
{
function index()
{
$users = User::paginate(10);
return view('pagination', compact('users'));
}
function paginationAjax(Request $request)
{
if($request->ajax())
{
$users = User::paginate(10);
return view('user_pagination_data', compact('users'))->render();
}
}
}
?>
Schritt 5: Blade-Datei erstellen
Jetzt erstellen wir eine pagination.blade.php- Datei. Fügen Sie dieser Datei also den folgenden HTML-Code hinzu. In dieser Datei fügen wir eine Benutzertabelle hinzu und erstellen einen JQuery-Ajax-Aufruf für die Paginierung.
resources/views/pagination.blade.php
<!DOCTYPE html>
<html>
<head>
<title>Laravel 10 Create AJAX Pagination Example</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style type="text/css">
.box{
width:600px;
margin:0 auto;
}
</style>
</head>
<body>
<div class="container">
<h3 align="center">Laravel 10 Create AJAX Pagination Example - Websolutionstuff</h3>
<br />
<div id="user_table">
@include('user_pagination_data')
</div>
</div>
</body>
</html>
<script>
$(document).ready(function(){
$(document).on('click', '.pagination a', function(event){
event.preventDefault();
var page = $(this).attr('href').split('page=')[1];
fetch_user_data(page);
});
function fetch_user_data(page)
{
$.ajax({
url:"/pagination/ajax?page="+page,
success:function(data)
{
$('#user_table').html(data);
}
});
}
});
</script>
resources/views/user_pagination_data.blade.php
<div class="table-responsive">
<table class="table table-striped table-bordered">
<tr>
<th width="10%">ID</th>
<th width="40%">Name</th>
<th width="50%">Email</th>
</tr>
@foreach($users as $user)
<tr>
<td>{{ $user->id }}</td>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
</tr>
@endforeach
</table>
{!! $users->links() !!}
</div>
Schritt 6: Führen Sie die Laravel 10-Anwendung aus
Jetzt führen wir das Laravel 10-JQuery-Ajax-Paginierungsbeispiel aus, ohne es neu zu laden.
php artisan serve
Viel Spaß beim Codieren!!!