


Explication détaillée de la méthode d'implémentation de la pagination manuelle dans Laravel
Dec 28, 2016 pm 04:29 PML'exemple de cet article décrit la méthode d'implémentation de la pagination manuelle dans Laravel. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants?:
L'exemple de démonstration ici est basé sur Laravel version 5.2
Il y a une situation pendant le processus de développement, vous demandez l'API Java pour obtenir des informations, car les informations sont nombreuses et doivent être affichées en pages. Laravel fournit officiellement une méthode simple, paginate($perPage), mais cette méthode s'applique uniquement au générateur de modèles et de requêtes.
Aujourd'hui, je vais parler de la fa?on d'obtenir le même effet que la méthode paginate avec un tableau.
Afficher le code source de la méthode paginate
#vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php:480 public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) { $query = $this->toBase(); $total = $query->getCountForPagination(); $this->forPage( $page = $page ?: Paginator::resolveCurrentPage($pageName), $perPage = $perPage ?: $this->model->getPerPage() ); return new LengthAwarePaginator($this->get($columns), $total, $perPage, $page, [ 'path' => Paginator::resolveCurrentPath(), 'pageName' => $pageName, ]); }
Comme vous pouvez le voir ci-dessus, la clé de la pagination réside dans lengthAwarePaginator.
Méthode de construction de LengthAwarePaginator.
public function __construct($items, $total, $perPage, $currentPage = null, array $options = []) { foreach ($options as $key => $value) { $this->{$key} = $value; } $this->total = $total; $this->perPage = $perPage; $this->lastPage = (int) ceil($total / $perPage); $this->path = $this->path != '/' ? rtrim($this->path, '/') : $this->path; $this->currentPage = $this->setCurrentPage($currentPage, $this->lastPage); $this->items = $items instanceof Collection ? $items : Collection::make($items); }
En fait, c'est déjà très clair. Si le tableau à paginer est
[ ['username'=>'zhangsan', 'age'=>26], ['username'=>'lisi', 'age'=>23], ['username'=>'wangwu', 'age'=>62], ['username'=>'zhaoliu', 'age'=>46], ['username'=>'wangmazi', 'age'=>25], ['username'=>'lanzi', 'age'=>24], ['username'=>'pangzi', 'age'=>21], ]
, il y a 7 données au total, et chaque page en affichera 3. morceaux, avec un total de 3 pages
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\Paginator; use Illuminate\Http\Request; # 僅做演示 # function userList(Request $request) { $users = [ ['username'=>'zhangsan', 'age'=>26], ['username'=>'lisi', 'age'=>23], ['username'=>'wangwu', 'age'=>62], ['username'=>'zhaoliu', 'age'=>46], ['username'=>'wangmazi', 'age'=>25], ['username'=>'lanzi', 'age'=>24], ['username'=>'pangzi', 'age'=>21] ]; $perPage = 3; if ($request->has('page')) { $current_page = $request->input('page'); $current_page = $current_page <= 0 ? 1 :$current_page; } else { $current_page = 1; } $item = array_slice($users, ($current_page-1)*$perPage, $perPage); //注釋1 $total = count($users); $paginator =new LengthAwarePaginator($item, $total, $perPage, $currentPage, [ 'path' => Paginator::resolveCurrentPath(), //注釋2 'pageName' => 'page', ]); $userlist = $paginator->toArray()['data']; return view('userlist', compact('userlist', 'paginator')); }
Le code ci-dessus se concentre sur $item Si le commentaire 1 n'est pas traité, les 7 éléments de données seront obtenus.
La remarque 2 consiste à définir une adresse URL à paginer. Il peut également être défini manuellement via $paginator ->setPath('path').
La connexion de pagination dans la page s'appelle également de la même manière :
{{ $paginator->render() }}
Correction !
J'espère que cet article sera utile à la conception de programmes PHP basés sur le framework Laravel.
Pour des explications plus détaillées sur les méthodes d'implémentation de la pagination manuelle de Laravel et les articles connexes, veuillez faire attention au site Web PHP chinois?!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)