Yajra est un package Laravel populaire qui fournit une variété d'outils et d'extensions pour le framework Laravel. L'un des packages Yajra les plus populaires est Yajra Datatables, qui facilite l'implémentation de tables de données côté serveur dans Laravel.
Dans ce tutoriel, nous apprenons comment implémenter des tables de données côté serveur dans Laravel 9 avec Yajra. Les tables de données nous permettent une recherche, une pagination, un classement, un tri rapides, etc.
Nous utiliserons le package yajra/laravel-datatables-oracle pour les tables de données côté serveur.
Tout d’abord, ouvrez Terminal et exécutez la commande suivante pour créer un nouveau projet Laravel :
#! /bin/bash
composer create-project --prefer-dist laravel/laravel laravel-datatable-example
ou, si vous avez installé le programme d'installation de Laravel en tant que dépendance globale du compositeur :
#! /bin/bash
laravel new laravel-datatable-example
Après l'installation, accédez au répertoire racine du projet, ouvrez le fichier .env et définissez les détails de la base de données comme suit :
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=<DATABASE NAME>
DB_USERNAME=<DATABASE USERNAME>
DB_PASSWORD=<DATABASE PASSWORD>
Pour installer les tables de données Yajra, nous devons exécuter une commande composer. Ouvrez le terminal, tapez cette commande et exécutez.
#! /bin/bash
composer require yajra/laravel-datatables-oracle:"~9.0"
Ce package est conçu pour gérer les performances côté serveur des tables de données du plugin jQuery via AJAX à l'aide d'Eloquent ORM, Query Builder ou Collection.
Dans cette étape, nous allons créer des utilisateurs factices à l’aide de la Tinker Factory. créons donc des enregistrements factices à l'aide de la commande ci-dessous :
Tout d’abord, ouvrez Tinker en utilisant cette commande
php artisan tinker
Après avoir ouvert Tinker, exécutez la commande suivante pour créer des enregistrements factices
User::factory()->count(500)->create()
Dans cette étape, nous devons créer un itinéraire pour le fichier de mise en page des tables de données et un autre pour obtenir des données. alors ouvrez votre fichier routes/web.php et ajoutez la route suivante.
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
Route::get('users', [UserController::class, 'index'])->name('users.index');
À ce stade, nous devons maintenant créer un nouveau contrôleur en tant que UserController. ce contrôleur gérera la mise en page, obtiendra les demandes de données et renverra une réponse, alors mettez le contenu ci-dessous dans le fichier du contrôleur :
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use DataTables;
class UserController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
if ($request->ajax()) {
$data = User::select('id','name','email')->get();
return Datatables::of($data)->addIndexColumn()
->addColumn('action', function($row){
$btn = '<a href="javascript:void(0)" class="btn btn-primary btn-sm">View</a>';
return $btn;
})
->rawColumns(['action'])
->make(true);
}
return view('users');
}
}
Dans la dernière étape, créons users.blade.php(resources/views/users.blade.php) pour la mise en page et nous écrirons ici le code de conception et mettrons le code suivant :
<!DOCTYPE html>
<html>
<head>
<title>Laravel 9 Server Side Datatables Tutorial</title>
<meta name="csrf-token" content="{{ csrf_token() }}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
<link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet">
<link href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css" rel="stylesheet">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
<script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12 table-responsive">
<table class="table table-bordered user_datatable">
<thead>
<tr>
<th>ID</th>
<th>Name</th>
<th>Email</th>
<th width="100px">Action</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
</body>
<script type="text/javascript">
$(function () {
var table = $('.user_datatable').DataTable({
processing: true,
serverSide: true,
ajax: "{{ route('users.index') }}",
columns: [
{data: 'id', name: 'id'},
{data: 'name', name: 'name'},
{data: 'email', name: 'email'},
{data: 'action', name: 'action', orderable: false, searchable: false},
]
});
});
</script>
</html>
Nous sommes maintenant prêts à exécuter notre exemple, alors exécutez la commande ci-dessous :
#! /bin/bash
php artisan serve
Vous pouvez maintenant ouvrir l'URL ci-dessous sur votre navigateur :
http://localhost:8000/users
Maintenant, lancez-le et testez-le !