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

Класс WithoutUrlPagination

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

Класс не имеет собственных методов и используется как маркер. Его применение гарантирует, что при обновлении страницы или переходе по прямой ссылке состояние пагинации не будет восстановлено из URL, а останется в значении по умолчанию (обычно первая страница).

Синтаксис

Для использования класса необходимо подключить трейт WithPagination в компоненте и применить класс WithoutUrlPagination:

<?php namespace AppLivewire; use LivewireComponent; use LivewireWithPagination; use LivewireWithoutUrlPagination; class UserList extends Component { use WithPagination, WithoutUrlPagination; public function render() { $users = User::paginate(10); return view('livewire.user-list', ['users' => $users]); } } ?>

Пример базового использования

Рассмотрим компонент для отображения списка пользователей. Без класса WithoutUrlPagination текущая страница будет сохраняться в URL:

<?php namespace AppLivewire; use LivewireComponent; use LivewireWithPagination; use AppModelsUser; class UserList extends Component { use WithPagination; public function render() { $users = User::paginate(10); return view('livewire.user-list', ['users' => $users]); } } ?>
<div> @foreach ($users as $user) <div>{{ $user->name }}</div> @endforeach {{ $users->links() }} </div>

При переходе на вторую страницу URL будет выглядеть как /users?page=2. После обновления страницы компонент восстановит состояние и покажет вторую страницу.

Пример с отключением сохранения в URL

Теперь добавим класс WithoutUrlPagination, чтобы отключить сохранение страницы в URL:

<?php namespace AppLivewire; use LivewireComponent; use LivewireWithPagination; use LivewireWithoutUrlPagination; use AppModelsUser; class UserList extends Component { use WithPagination, WithoutUrlPagination; public function render() { $users = User::paginate(10); return view('livewire.user-list', ['users' => $users]); } } ?>
<div> @foreach ($users as $user) <div>{{ $user->name }}</div> @endforeach {{ $users->links() }} </div>

Теперь при переходе на вторую страницу URL останется без параметра page, а при обновлении страницы компонент покажет первую страницу по умолчанию.

Пример с фильтрацией

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

<?php namespace AppLivewire; use LivewireComponent; use LivewireWithPagination; use LivewireWithoutUrlPagination; use AppModelsProduct; class ProductList extends Component { use WithPagination, WithoutUrlPagination; public $search = ''; public function updatingSearch() { $this->resetPage(); } public function render() { $products = Product::where('name', 'like', '%' . $this->search . '%') ->paginate(10); return view('livewire.product-list', [ 'products' => $products ]); } } ?>
<div> <input type="text" wire:model.live="search" placeholder="Search..."> @foreach ($products as $product) <div>{{ $product->name }}</div> @endforeach {{ $products->links() }} </div>

Благодаря классу WithoutUrlPagination при вводе поискового запроса URL остаётся чистым, а страница всегда сбрасывается на первую при изменении фильтра.

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

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