Původně zveřejněno @ https://codeanddeploy.com navštivte a stáhněte si ukázkový kód:https://codeanddeploy.com/blog/laravel/laravel-8-pagination-example-using-bootstrap-5
V tomto příspěvku se podělím o příklad, jak implementovat Laravel 8 Pagination pomocí Bootstrap 5. Stránkování na Laravelu je nezbytné, pokud máte tabulku s velkými daty a chcete ji zobrazit po stránkách, závisí na vašem limitu na výsledek.
Krok 1:Instalace Laravel
Začněte naší stránkou Laravel tutorial. Pokud nemáte instalaci Laravel 8 v místním prostředí, spusťte následující příkaz:
composer create-project --prefer-dist laravel/laravel crud
Krok 2:Konfigurace databáze
Pokud váš projekt Laravel je čerstvá, musíte aktualizovat přihlašovací údaje k databázi. Stačí otevřít soubor .env ve vašem projektu Laravel 8.
.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name_here
DB_USERNAME=your_database_username_here
DB_PASSWORD=your_database_password_here
Krok 3:Nastavení migrace
V tomto příkladu používáme tabulku uživatele a přidám k ní pole uživatelského jména. Podívejte se na níže uvedený příklad naší migrace.
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name')->nullable();
$table->string('email')->unique();
$table->string('username')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
Nyní spusťte následující příkaz níže:
php artisan migrate
Krok 4:Nastavení modelu
Níže je uveden příklad kódu našeho uživatelského modelu, který používáme pro stránkování Laravel.
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, HasFactory, Notifiable;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name',
'email',
'username',
'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
/**
* Always encrypt password when it is updated.
*
* @param $value
* @return string
*/
public function setPasswordAttribute($value)
{
$this->attributes['password'] = bcrypt($value);
}
}
Krok 5:Generování falešných dat pomocí Faker
Nyní vygenerujeme falešná data pro tabulku našich uživatelů pomocí balíčku Laravel, Faker.
Ve vaší Databázi\Factories\UserFactory třídy upravíme a implementujeme faker.
<?php
namespace Database\Factories;
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
use Illuminate\Support\Str;
class UserFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = User::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'username' => $this->faker->unique()->userName,
'email_verified_at' => now(),
'password' => 'test', // password
'remember_token' => Str::random(10),
];
}
/**
* Indicate that the model's email address should be unverified.
*
* @return \Illuminate\Database\Eloquent\Factories\Factory
*/
public function unverified()
{
return $this->state(function (array $attributes) {
return [
'email_verified_at' => null,
];
});
}
}
Poté do své třídy Database\Seeders\DatabaseSeeder přidejte níže uvedený kód do metody run():
\App\Models\User::factory(100)->create();
Zde je úplný kód:
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*
* @return void
*/
public function run()
{
\App\Models\User::factory(100)->create();
}
}
Nyní spusťte následující příkaz níže:
php artisan db:seed
A vygeneruje 100 falešných dat do tabulky vašeho uživatele.
Krok 6:Vytvořte ovladač a trasu pro náš příklad stránkování Laravel
Spusťte následující příkaz níže a vytvořte UsersController
php artisan make:controller UsersController
Poté vložte níže uvedený kód do souboru UsersController.
<?php
namespace App\Http\Controllers;
use App\Models\User;
use Illuminate\Http\Request;
class UsersController extends Controller
{
/**
* Display all users
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$users = User::latest()->paginate(10);
return view('users.index', compact('users'));
}
}
Jak můžete vidět výše, nazýváme paginate() po latest() metoda s 10 výsledky na každé stránce. Umožní nám to zobrazit výsledky po stránkách. Další informace o stránkování Laravel naleznete zde.
Poté vytvořte naši trasu:
Route::get('/users', 'App\Http\Controllers\UsersController@index')->name('users.index');
Krok 7:Přidejte zobrazení čepele pro naši stránku Laravel
Na vaše zdroje/zobrazení/ vytvořit uživatele složku a poté vytvořte index.blade.php
Nyní by to mělo být takto:resources/views/users/index.blade.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Laravel 8 Pagination Demo - codeanddeploy.com</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-5">
<table class="table table-striped">
<thead>
<tr>
<th scope="col" width="1%">#</th>
<th scope="col" width="15%">Name</th>
<th scope="col">Email</th>
<th scope="col" width="10%">Username</th>
</tr>
</thead>
<tbody>
@foreach($users as $user)
<tr>
<th scope="row">{{ $user->id }}</th>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
<td>{{ $user->username }}</td>
</tr>
@endforeach
</tbody>
</table>
<div class="d-flex">
{!! $users->links() !!}
</div>
</div>
</body>
</html>
Jak můžete vidět také výše, nazýváme {!! $users->links() !!} funkci tak, že se nám zobrazí stránkování Laravel 8.
Další:
Ve vašem App\Providers\AppServiceProvider třídy, musíte přidat kód níže do boot() funkce pro podporu bootstrap paginátoru.
Paginator::useBootstrap();
Kompletní kód:
<?php
namespace App\Providers;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\ServiceProvider;
class AppServiceProvider extends ServiceProvider
{
/**
* Register any application services.
*
* @return void
*/
public function register()
{
//
}
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Paginator::useBootstrap();
}
}
Nyní máte základní příklad, jak implementovat stránkování Laravel 8, doufám, že to pomůže.
Doufám, že vám tento návod pomůže. Pokud si chcete tento kód stáhnout, navštivte prosím https://codeanddeploy.com/blog/laravel/laravel-8-pagination-example-using-bootstrap-5.
Hodně štěstí při kódování :)