Nette Documentation Preview

syntax
Paginator
*********

.[perex]
Необходимо е да подредите страниците на изхвърляне на данни? Тъй като математиката на странирането може да бъде сложна, [api:Nette\Utils\Paginator] може да ви помогне с това.


Монтаж:

```shell
composer require nette/utils
```

Създаване на обект за странициране и задаване на основната му информация:

```php
$paginator = new Nette\Utils\Paginator;
$paginator->setPage(1); // номер на текущата страница
$paginator->setItemsPerPage(30); // брой елементи на страницата
$paginator->setItemCount(356); // общ брой елементи, ако е известен
```

Страниците са номерирани от 1. Можем да променим това с помощта на `setBase()`:

```php
$paginator->setBase(0); // номериране от 0
```

Обектът вече ще предоставя цялата основна информация, полезна за създаването на страница за страниране. Например можете да го предадете на шаблон и да го използвате там.

```php
$paginator->isFirst(); // дали сме на първата страница?
$paginator->isLast(); // дали сме на последната страница?
$paginator->getPage(); // номер на текущата страница
$paginator->getFirstPage(); // номер на първата страница
$paginator->getLastPage(); // номер на последната страница
$paginator->getFirstItemOnPage(); // пореден номер на първия елемент на страницата
$paginator->getLastItemOnPage(); // пореден номер на последния елемент на страницата
$paginator->getPageIndex(); // номер на текущата страница, номериране от 0
$paginator->getPageCount(); // общ брой страници
$paginator->getItemsPerPage(); // брой елементи на страницата
$paginator->getItemCount(); // общ брой елементи, ако е известен
```

Конструкторът на страници ще ви помогне да правите SQL заявки. Методите `getLength()` и `getOffset()` връщат стойности, които да се използват в клаузите LIMIT и OFFSET:

```php
$result = $database->query(
	'SELECT * FROM items LIMIT ? OFFSET ?',
	$paginator->getLength(),
	$paginator->getOffset(),
);
```

Ако трябва да подредим страниците в обратен ред, т.е. страница 1 да отговаря на най-високото отместване, използваме `getCountdownOffset()`:

```php
$result = $database->query(
	'SELECT * FROM items LIMIT ? OFFSET ?',
	$paginator->getLength(),
	$paginator->getCountdownOffset(),
);
```

Пример за използване на тази функция в приложение е даден в готварската книга [Database Results Pagination |best-practices:pagination].

Paginator

Необходимо е да подредите страниците на изхвърляне на данни? Тъй като математиката на странирането може да бъде сложна, Nette\Utils\Paginator може да ви помогне с това.

Монтаж:

composer require nette/utils

Създаване на обект за странициране и задаване на основната му информация:

$paginator = new Nette\Utils\Paginator;
$paginator->setPage(1); // номер на текущата страница
$paginator->setItemsPerPage(30); // брой елементи на страницата
$paginator->setItemCount(356); // общ брой елементи, ако е известен

Страниците са номерирани от 1. Можем да променим това с помощта на setBase():

$paginator->setBase(0); // номериране от 0

Обектът вече ще предоставя цялата основна информация, полезна за създаването на страница за страниране. Например можете да го предадете на шаблон и да го използвате там.

$paginator->isFirst(); // дали сме на първата страница?
$paginator->isLast(); // дали сме на последната страница?
$paginator->getPage(); // номер на текущата страница
$paginator->getFirstPage(); // номер на първата страница
$paginator->getLastPage(); // номер на последната страница
$paginator->getFirstItemOnPage(); // пореден номер на първия елемент на страницата
$paginator->getLastItemOnPage(); // пореден номер на последния елемент на страницата
$paginator->getPageIndex(); // номер на текущата страница, номериране от 0
$paginator->getPageCount(); // общ брой страници
$paginator->getItemsPerPage(); // брой елементи на страницата
$paginator->getItemCount(); // общ брой елементи, ако е известен

Конструкторът на страници ще ви помогне да правите SQL заявки. Методите getLength() и getOffset() връщат стойности, които да се използват в клаузите LIMIT и OFFSET:

$result = $database->query(
	'SELECT * FROM items LIMIT ? OFFSET ?',
	$paginator->getLength(),
	$paginator->getOffset(),
);

Ако трябва да подредим страниците в обратен ред, т.е. страница 1 да отговаря на най-високото отместване, използваме getCountdownOffset():

$result = $database->query(
	'SELECT * FROM items LIMIT ? OFFSET ?',
	$paginator->getLength(),
	$paginator->getCountdownOffset(),
);

Пример за използване на тази функция в приложение е даден в готварската книга Database Results Pagination.