РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
889 of 1392 menu

Метод withQueryString

Метод withQueryString применяется к экземпляру LengthAwarePaginator и возвращает тот же объект пагинатора, дополненный параметрами текущего запроса. При вызове метода все параметры из строки запроса (query string) автоматически добавляются к URL-адресам страниц пагинации. Метод не принимает никаких параметров и работает как с GET-параметрами, так и с параметрами маршрута. Это особенно полезно при фильтрации данных, когда нужно сохранить выбранные пользователем критерии поиска.

Синтаксис

<?php $paginator->withQueryString(); ?>

Пример использования в контроллере

Рассмотрим типичный пример использования метода withQueryString в контроллере для сохранения параметров фильтрации при пагинации:

<?php namespace App\Http\Controllers; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function index(Request $request) { $query = Article::query(); if ($request->has('search')) { $query->where('string', 'like', '%' . $request->search . '%'); } if ($request->has('category')) { $query->where('category', $request->category); } $articles = $query->paginate(10)->withQueryString(); return view('articles.index', ['articles' => $articles]); } } ?>

Пример отображения ссылок в Blade

В шаблоне Blade для отображения ссылок пагинации используется метод links. Все параметры запроса будут автоматически добавлены к каждой ссылке:

<form method="GET" action="/articles"> <input type="text" name="search" placeholder="Search articles"> <select name="category"> <option value="">All categories</option> <option value="tech">Technology</option> <option value="science">Science</option> </select> <button type="submit">Search</button> </form> @foreach ($articles as $article) <div> <h3>{{ $article->title }}</h3> <p>{{ $article->description }}</p> </div> @endforeach {{ $articles->links() }}

Результат работы

После применения метода withQueryString ссылки пагинации будут содержать все параметры запроса. Например, при переходе на вторую страницу URL будет выглядеть так:

https://example.com/articles?search=laravel&category=tech&page=2

Пример с несколькими параметрами

Метод withQueryString сохраняет все параметры, включая сортировку и фильтры. Рассмотрим более сложный пример:

<?php namespace App\Http\Controllers; use App\Models\Product; use Illuminate\Http\Request; class ProductController extends Controller { public function index(Request $request) { $query = Product::query(); if ($request->has('min_price')) { $query->where('price', '>=', $request->min_price); } if ($request->has('max_price')) { $query->where('price', '<=', $request->max_price); } if ($request->has('sort')) { $query->orderBy($request->sort, $request->get('direction', 'asc')); } $products = $query->paginate(15)->withQueryString(); return view('products.index', ['products' => $products]); } } ?>

Пример комбинирования с другими методами

Метод withQueryString можно комбинировать с другими методами пагинатора, такими как fragment и appends:

<?php namespace App\Http\Controllers; use App\Models\User; use Illuminate\Http\Request; class UserController extends Controller { public function index(Request $request) { $users = User::where('status', 'active') ->paginate(20) ->withQueryString() ->fragment('users-list') ->appends(['filter' => 'active']); return view('users.index', ['users' => $users]); } } ?>

Результат комбинированного примера

В результате все ссылки пагинации будут содержать параметры запроса, якорь и дополнительные параметры:

"/users?page=2&filter=active#users-list" "/users?page=3&filter=active#users-list"

Смотрите также

  • метод paginate,
    который создает экземпляр пагинатора с полной информацией о страницах
  • метод links,
    который генерирует HTML-ссылки для навигации по страницам
  • метод appends,
    который добавляет дополнительные параметры к ссылкам пагинации
  • метод fragment,
    который добавляет якорь к ссылкам пагинации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить