Das Laravel-Framework ist eines der beliebtesten PHP-Entwicklungsframeworks weltweit. In den letzten Jahren hat Laravel aufgrund seiner Leistung, Sicherheit, Eleganz und anderen Funktionen schnell den Spitzenplatz unter den PHP-Entwicklungsframeworks eingenommen. Mittlerweile ist das Laravel-Framework zum bevorzugten Framework für große Internetunternehmen und PHP-Belagerer geworden.
Adresse für die Kurswiedergabe: //m.sbmmt.com/course/395.html
Die Der Unterrichtsstil des Lehrers:
Die Vorträge des Lehrers sind einfach und tiefgründig, klar in der Struktur, schichtweise analysiert, ineinandergreifend, streng in der Argumentation und streng in der Struktur. Er nutzt die logische Kraft des Denkens um die Aufmerksamkeit der Schüler zu erregen und den Unterrichtsprozess vernünftig zu steuern. Die Lehrfähigkeiten sind voller Witz. Verschiedene Lehrmethoden und -techniken sind leicht verfügbar und können ohne jede Spur von Feinschliff frei und angemessen eingesetzt werden.
Der schwierigere Punkt in diesem Video ist die Laravel-Formularlisten- und Paging-Implementierung:
Während des Entwicklungsprozesses gibt es eine Situation, in der Sie die Java-API anfordern Informationen erhalten. Es gibt viele Informationen, die auf Seiten angezeigt werden müssen. Laravel bietet offiziell eine einfache Methode, paginate($perPage), aber diese Methode gilt nur für Modell- und Abfrage-Builder.
Heute werde ich darüber sprechen, wie man mit einem Array den gleichen Effekt wie mit der Paginierungsmethode erzielt.
Sehen Sie sich den Quellcode der Paginierungsmethode an
#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, ]); }
Wie Sie oben sehen können, liegt der Schlüssel zum Paginieren in LengthAwarePaginator.
Konstruktionsmethode von 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); }
Tatsächlich ist es bereits sehr klar. Wenn das auszulagernde Array
[ ['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], ]
ist, gibt es insgesamt 7 Datenelemente und auf jeder Seite werden 3 angezeigt Teile mit insgesamt 3 Seiten
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')); }
Der Fokus des obigen Codes liegt auf $item. Wenn Kommentar 1 nicht verarbeitet wird, werden alle 7 Daten abgerufen.
Hinweis 2 besteht darin, eine URL-Adresse festzulegen, die paginiert werden soll. Es kann auch manuell über $paginator ->setPath(‘path’) eingestellt werden.
Die Paging-Verbindung in der Seite wird auch auf die gleiche Weise aufgerufen {{ $paginator->render() }}
Das obige ist der detaillierte Inhalt vonLernen Sie ganz einfach das Formular-Video-Tutorial von Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!