Szukaj…


Paginacja w Laravel

W innych ramach paginacja to ból głowy. Laravel sprawia, że jest to proste, może generować paginację, dodając kilka wierszy kodu w kontrolerach i widoku.

Podstawowe użycie

Istnieje wiele sposobów na paginowanie elementów, ale najprostszym jest użycie metody paginacji w narzędziu do tworzenia zapytań lub zapytania Elokwentnego . Laravel po wyjęciu z pudełka zadba o ustawienie limitu i przesunięcia na podstawie bieżącej strony oglądanej przez użytkownika. Domyślnie bieżąca strona jest wykrywana przez wartość argumentu ciągu zapytania? Strona w żądaniu HTTP. I na pewno ta wartość jest wykrywana automatycznie przez Laravela i wstawiana do linków generowanych przez paginator.

Powiedzmy, że chcemy wywołać metodę paginate w zapytaniu. W naszym przykładzie przekazanym argumentem paginacji jest liczba elementów, które chciałbyś wyświetlić „na stronę”. W naszym przypadku powiedzmy, że chcemy wyświetlić 10 elementów na stronie.

<?php

namespace App\Http\Controllers;

use DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * Show all of the users for the application.
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::table('users')->paginate(10);

        return view('user.index', ['users' => $users]);
    }
}

Uwaga: Obecnie operacje podziału na groupBy z groupBy instrukcji groupBy nie mogą być skutecznie wykonywane przez Laravela. Jeśli chcesz użyć groupBy z zestawem wyników stronicowania, zaleca się zapytanie do bazy danych i ręczne utworzenie paginatora.

Prosta paginacja

Powiedzmy, że chcesz wyświetlać linki Następny i Poprzedni w widoku paginacji. Laravel udostępnia tę opcję za pomocą metody simplePaginate .

$users = DB::table('users')->simplePaginate(10);

Wyświetlanie wyników w widoku

Teraz pozwala wyświetlać paginację w widoku. Faktycznie podczas wywoływania paginate lub simplePaginate metod na wymowny zapytania, otrzymasz instancji paginator. Gdy wywoływana jest metoda Illuminate\Pagination\LengthAwarePaginator , Illuminate\Pagination\LengthAwarePaginator się instancja Illuminate\Pagination\LengthAwarePaginator , a podczas wywoływania metody simplePaginate się instancja Illuminate\Pagination\Paginator . Te instancje / obiekty zawierają kilka metod wyjaśniających zestaw wyników. Ponadto, oprócz tych metod pomocniczych, instancje paginatora są iteratorami i mogą być zapętlone jako tablica.

Po otrzymaniu wyników możesz łatwo renderować linki do stron przy użyciu bloku

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>

{{ $users->links() }}

Metoda links automatycznie renderuje linki do innych stron w zestawie wyników. Każdy z tych łączy będzie zawierał określony numer strony, tj. Zmienną ciągu zapytania o ?page . HTML generowany za pomocą metody links jest w pełni zgodny ze strukturą Bootstrap CSS.

Zmiana widoków stronicowania

Korzystając z podziału na strony laravel, możesz swobodnie korzystać z własnych widoków niestandardowych, dlatego podczas wywoływania metody links w instancji paginator przekaż nazwę widoku jako pierwszy argument do metody:

{{ $paginator->links('view.name') }}

lub

Można dostosować widoki stronicowania, eksportując je do katalogu resources/views/vendor za pomocą polecenia vendor: opublikuj:

php artisan vendor:publish --tag=laravel-pagination

To polecenie umieści widoki w katalogu resources/views/vendor/pagination . Plik default.blade.php w tym katalogu odpowiada domyślnemu widokowi stronicowania. Edytuj ten plik, aby zmodyfikować HTML stronicowania.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow