Nette Documentation Preview

syntax
Paginator
*********

.[perex]
Aveți nevoie să paginați o listă de date? Deoarece matematica din spatele paginării poate fi complicată, [api:Nette\Utils\Paginator] vă va ajuta.


Instalare:

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

Să creăm un obiect de paginare și să setăm informațiile de bază pentru acesta:

```php
$paginator = new Nette\Utils\Paginator;
$paginator->setPage(1); // numărul paginii curente (numerotat de la 1)
$paginator->setItemsPerPage(30); // numărul de înregistrări pe pagină
$paginator->setItemCount(356); // numărul total de înregistrări (dacă este disponibil)
```

Paginile sunt numerotate de la 1. Le putem schimba folosind `setBase()`:

```php
$paginator->setBase(0); // numerotate de la 0
```

Obiectul va furniza acum toate informațiile de bază utile în crearea unui paginator. Puteți, de exemplu, să-l treceți într-un șablon și să-l utilizați acolo.

```php
$paginator->isFirst(); // Aceasta este prima pagină?
$paginator->isLast(); // Este ultima pagină?
$paginator->getPage(); // numărul paginii curente
$paginator->getFirstPage(); // numărul primei pagini
$paginator->getLastPage(); // numărul ultimei pagini
$paginator->getFirstItemOnPage(); // numărul secvențial al primului articol de pe pagină
$paginator->getLastItemOnPage(); // numărul de ordine al ultimului element de pe pagină
$paginator->getPageIndex(); // numărul paginii curente, dacă este numerotată de la 0
$paginator->getPageCount(); // numărul total de pagini
$paginator->getItemsPerPage(); // numărul de înregistrări pe pagină
$paginator->getItemCount(); // numărul total de înregistrări (dacă este disponibil)
```

Paginatorul va ajuta la formularea interogării SQL. Metodele `getLength()` și `getOffset()` returnează valorile pe care le puteți utiliza în clauzele LIMIT și OFFSET:

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

Dacă aveți nevoie de paginare în ordine inversă, adică pagina nr. 1 corespunde celui mai mare decalaj, puteți utiliza `getCountdownOffset()`:

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

Un exemplu de utilizare în aplicație poate fi găsit în cartea de bucate [Paginarea rezultatelor bazei de date |best-practices:pagination].

Paginator

Aveți nevoie să paginați o listă de date? Deoarece matematica din spatele paginării poate fi complicată, Nette\Utils\Paginator vă va ajuta.

Instalare:

composer require nette/utils

Să creăm un obiect de paginare și să setăm informațiile de bază pentru acesta:

$paginator = new Nette\Utils\Paginator;
$paginator->setPage(1); // numărul paginii curente (numerotat de la 1)
$paginator->setItemsPerPage(30); // numărul de înregistrări pe pagină
$paginator->setItemCount(356); // numărul total de înregistrări (dacă este disponibil)

Paginile sunt numerotate de la 1. Le putem schimba folosind setBase():

$paginator->setBase(0); // numerotate de la 0

Obiectul va furniza acum toate informațiile de bază utile în crearea unui paginator. Puteți, de exemplu, să-l treceți într-un șablon și să-l utilizați acolo.

$paginator->isFirst(); // Aceasta este prima pagină?
$paginator->isLast(); // Este ultima pagină?
$paginator->getPage(); // numărul paginii curente
$paginator->getFirstPage(); // numărul primei pagini
$paginator->getLastPage(); // numărul ultimei pagini
$paginator->getFirstItemOnPage(); // numărul secvențial al primului articol de pe pagină
$paginator->getLastItemOnPage(); // numărul de ordine al ultimului element de pe pagină
$paginator->getPageIndex(); // numărul paginii curente, dacă este numerotată de la 0
$paginator->getPageCount(); // numărul total de pagini
$paginator->getItemsPerPage(); // numărul de înregistrări pe pagină
$paginator->getItemCount(); // numărul total de înregistrări (dacă este disponibil)

Paginatorul va ajuta la formularea interogării SQL. Metodele getLength() și getOffset() returnează valorile pe care le puteți utiliza în clauzele LIMIT și OFFSET:

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

Dacă aveți nevoie de paginare în ordine inversă, adică pagina nr. 1 corespunde celui mai mare decalaj, puteți utiliza getCountdownOffset():

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

Un exemplu de utilizare în aplicație poate fi găsit în cartea de bucate Paginarea rezultatelor bazei de date.