Атрибут perPage
Атрибут perPage класса LengthAwarePaginator
позволяет получить количество записей, которое выводится
на одной странице. Это значение передаётся вторым
аргументом в метод paginate или устанавливается
вручную при создании экземпляра пагинатора. Атрибут доступен
только для чтения и не может быть изменён напрямую.
Синтаксис
<?php
$perPage = $paginator->perPage;
?>
Атрибут возвращает целое число - количество элементов на странице.
Пример
Получим количество элементов на странице для пагинатора статей с 10 записями на странице:
<?php
namespace AppHttpControllers;
use AppModelsArticle;
use IlluminateHttpRequest;
class ArticleController extends Controller
{
public function index(Request $request)
{
$articles = Article::paginate(10);
$perPage = $articles->perPage;
echo "Elements per page: " . $perPage;
return view('articles.index', [
'articles' => $articles,
'perPage' => $perPage
]);
}
}
?>
Результат выполнения кода:
"Elements per page: 10"
Пример
Используем атрибут perPage для отображения
информации о пагинации в представлении Blade:
@if ($articles->count())
<p>Showing {{ $articles->count() }} of {{ $articles->total() }} articles</p>
<p>Per page: {{ $articles->perPage }}</p>
@foreach ($articles as $article)
<div>{{ $article->title }}</div>
@endforeach
{{ $articles->links() }}
@else
<p>No articles found</p>
@endif
Результат выполнения кода (HTML):
<p>Showing 10 of 100 articles</p>
<p>Per page: 10</p>
<div>Article 1</div>
<div>Article 2</div>
...
<div>Article 10</div>
<ul class="pagination">...</ul>
Пример
Создадим пагинатор вручную и проверим значение атрибута
perPage:
<?php
namespace AppHttpControllers;
use IlluminatePaginationLengthAwarePaginator;
use IlluminateHttpRequest;
class CustomController extends Controller
{
public function index(Request $request)
{
$items = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'];
$perPage = 4;
$currentPage = $request->get('page', 1);
$currentItems = array_slice($items, ($currentPage - 1) * $perPage, $perPage);
$paginator = new LengthAwarePaginator(
$currentItems,
count($items),
$perPage,
$currentPage,
['path' => $request->url()]
);
$res = $paginator->perPage;
echo "Per page: " . $res;
return view('custom.index', ['paginator' => $paginator]);
}
}
?>
Результат выполнения кода:
"Per page: 4"
Смотрите также
-
метод
paginate,
который создаёт пагинатор с заданным количеством элементов на странице -
атрибут
total,
который возвращает общее количество записей -
метод
currentPage,
который возвращает номер текущей страницы -
метод
items,
который возвращает коллекцию элементов на текущей странице