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

Метод withQueryString

Метод withQueryString класса WithPagination определяет, должен ли номер текущей страницы сохраняться в параметре запроса URL. По умолчанию Livewire автоматически добавляет параметр page в адресную строку при использовании пагинации. Этот метод позволяет явно указать это поведение или изменить имя параметра запроса. Он вызывается в методе bootWithPagination или непосредственно в компоненте для настройки синхронизации.

Синтаксис

<?php use Livewire\WithPagination; class Users extends Component { use WithPagination; public function boot() { $this->withQueryString('custom_page'); } } ?>

Метод принимает один необязательный параметр - строку с именем параметра запроса, которое будет использоваться для хранения номера страницы. Если параметр не передан, используется значение по умолчанию page.

Пример

Давайте настроим компонент со списком пользователей, чтобы номер страницы сохранялся в URL с параметром page:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithPagination; use App\Models\User; class Users extends Component { use WithPagination; public function render() { $users = User::paginate(10); return view('livewire.users', ['users' => $users]); } } ?>
<div> @foreach ($users as $user) <p>{{ $user->name }}</p> @endforeach {{ $users->links() }} </div>

Результат выполнения кода:

<div> <p>John Doe</p> <p>Jane Smith</p> <!-- ... --> <nav> <ul> <li><a href="?page=2">2</a></li> <li><a href="?page=3">3</a></li> </ul> </nav> </div>

Теперь при переходе на вторую страницу URL будет содержать ?page=2. При обновлении страницы пользователь останется на той же странице.

Пример

Давайте изменим имя параметра запроса на p с помощью метода withQueryString:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithPagination; use App\Models\Product; class Products extends Component { use WithPagination; public function boot() { $this->withQueryString('p'); } public function render() { $products = Product::paginate(5); return view('livewire.products', ['products' => $products]); } } ?>
<div> @foreach ($products as $product) <p>{{ $product->name }}</p> @endforeach {{ $products->links() }} </div>

Результат выполнения кода:

<div> <p>Product A</p> <p>Product B</p> <!-- ... --> <nav> <ul> <li><a href="?p=2">2</a></li> <li><a href="?p=3">3</a></li> </ul> </nav> </div>

Теперь параметр страницы в URL будет отображаться как ?p=2 вместо стандартного ?page=2.

Пример

Давайте используем метод withQueryString для отключения синхронизации с URL, передав в него пустую строку:

<?php namespace App\Livewire; use Livewire\Component; use Livewire\WithPagination; use App\Models\Post; class Posts extends Component { use WithPagination; public function boot() { $this->withQueryString(''); } public function render() { $posts = Post::paginate(3); return view('livewire.posts', ['posts' => $posts]); } } ?>
<div> @foreach ($posts as $post) <p>{{ $post->title }}</p> @endforeach {{ $posts->links() }} </div>

Результат выполнения кода:

<div> <p>Post 1</p> <p>Post 2</p> <p>Post 3</p> <nav> <ul> <li><a href="#">2</a></li> <li><a href="#">3</a></li> </ul> </nav> </div>

Теперь при переходе между страницами параметр в URL не добавляется. Страница всегда будет отображаться с текущим номером без параметра в адресной строке.

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

  • трейт WithPagination,
    который добавляет функциональность пагинации
  • метод resetPage,
    который сбрасывает текущую страницу на первую
  • метод setPage,
    который устанавливает конкретный номер страницы
  • раздел работа с параметрами запроса,
    в котором описана настройка синхронизации свойств с URL
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить