Le framework Laravel est l'un des frameworks de développement PHP les plus populaires au monde. Ces dernières années, Laravel a rapidement occupé la première place parmi les frameworks de développement PHP en raison de sa puissance, de sa sécurité, de son élégance et d'autres fonctionnalités. Désormais, le framework Laravel est devenu le framework préféré des grandes sociétés Internet et des assiégés de PHP.
Adresse de lecture du cours : http://www.php.cn/course/395.html
Le Style d'enseignement de l'enseignant :
Les cours de l'enseignant sont simples et approfondis, de structure claire, analysés couche par couche, imbriqués, rigoureux dans l'argumentation et rigoureux dans la structure. Il utilise le pouvoir logique de la pensée. pour attirer l'attention des étudiants et contrôler le processus d'enseignement en classe. Les compétences pédagogiques sont pleines d'esprit. Diverses méthodes et techniques d'enseignement sont facilement disponibles et peuvent être utilisées librement et de manière appropriée sans aucune trace de polissage.
Le point le plus difficile dans cette vidéo est la liste de formulaires Laravel et l'implémentation de la pagination :
Il y a une telle situation pendant le processus de développement, vous demandez à l'API Java de obtenir des informations, car Il y a beaucoup d'informations et doivent être affichées dans des 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, parlons 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 est également appelée de la même manière {{ $paginator->render() }}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!