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

Метод appends

Метод appends класса LengthAwarePaginator применяется к объекту пагинации и позволяет добавить произвольные параметры к URL-адресам страниц. В качестве аргумента метод принимает массив ключ-значение, где ключ - имя параметра, а значение - его содержимое. Данные параметры будут добавлены ко всем ссылкам пагинации, включая ссылки на предыдущую и следующую страницы.

Синтаксис

<?php $paginator->appends($array); ?>

Пример

Давайте добавим параметр фильтрации 'category' в ссылки пагинации:

<?php namespace AppHttpControllers; use AppModelsArticle; use IlluminateHttpRequest; class ArticleController extends Controller { public function index(Request $request) { $category = $request->input('category', 'all'); $articles = Article::where('category', $category)->paginate(10); $articles->appends(['category' => $category]); return view('articles.index', ['articles' => $articles]); } } ?>

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

<div> @foreach ($articles as $article) <p>{{ $article->title }}</p> @endforeach {{ $articles->links() }} </div>

Результат в HTML при текущей странице 2:

<div> <p>article 1</p> <p>article 2</p> <!-- ... --> <nav> <ul> <li><a href="?page=1&category=science">1</a></li> <li><a href="?page=2&category=science" class="active">2</a></li> <li><a href="?page=3&category=science">3</a></li> </ul> </nav> </div>

Пример

Давайте добавим несколько параметров одновременно, включая сортировку и поиск:

<?php namespace AppHttpControllers; use AppModelsUser; use IlluminateHttpRequest; class UserController extends Controller { public function index(Request $request) { $query = User::query(); if ($request->has('search')) { $query->where('name', 'like', '%' . $request->search . '%'); } if ($request->has('sort')) { $query->orderBy($request->sort, $request->direction ?? 'asc'); } $users = $query->paginate(15); $users->appends([ 'search' => $request->search, 'sort' => $request->sort, 'direction' => $request->direction ]); return view('users.index', ['users' => $users]); } } ?>

Результат выполнения кода при текущей странице 1:

<nav> <ul> <li><a href="?page=2&search=john&sort=name&direction=asc">2</a></li> <li><a href="?page=3&search=john&sort=name&direction=asc">3</a></li> </ul> </nav>

Пример

Метод appends можно использовать для сохранения всех текущих параметров запроса с помощью метода all:

<?php namespace AppHttpControllers; use AppModelsProduct; use IlluminateHttpRequest; class ProductController extends Controller { public function index(Request $request) { $products = Product::paginate(20); $products->appends($request->all()); return view('products.index', ['products' => $products]); } } ?>

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

<nav> <ul> <li><a href="?page=2&color=red&size=l&brand=nike">2</a></li> <li><a href="?page=3&color=red&size=l&brand=nike">3</a></li> </ul> </nav>

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

  • метод links,
    который выводит ссылки пагинации
  • метод withQueryString,
    который автоматически добавляет все параметры запроса
  • метод fragment,
    который добавляет якорь к ссылкам пагинации
  • метод url,
    который генерирует URL для конкретной страницы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить