Nette Documentation Preview

syntax
Paginator
*********

.[perex]
Avete bisogno di impaginare un elenco di dati? Poiché la matematica della paginazione può essere insidiosa, [api:Nette\Utils\Paginator] vi aiuterà.


Installazione:

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

Creiamo un oggetto paginator e impostiamo le informazioni di base:

```php
$paginator = new Nette\Utils\Paginator;
$paginator->setPage(1); // numero della pagina corrente
$paginator->setItemsPerPage(30); // numero di elementi per pagina
$paginator->setItemCount(356); // numero totale di elementi, se noto
```

Le pagine sono numerate a partire da 1. Possiamo cambiarlo usando `setBase()`:

```php
$paginator->setBase(0); // numeriamo da 0
```

L'oggetto ora fornirà tutte le informazioni di base utili per la creazione di un paginator. Potete, ad esempio, passarlo a un template e utilizzarlo lì.

```php
$paginator->isFirst(); // siamo sulla prima pagina?
$paginator->isLast(); // siamo sull'ultima pagina?
$paginator->getPage(); // numero della pagina corrente
$paginator->getFirstPage(); // numero della prima pagina
$paginator->getLastPage(); // numero dell'ultima pagina
$paginator->getFirstItemOnPage(); // numero ordinale del primo elemento sulla pagina
$paginator->getLastItemOnPage(); // numero ordinale dell'ultimo elemento sulla pagina
$paginator->getPageIndex(); // numero della pagina corrente numerata da 0 (indice)
$paginator->getPageCount(); // numero totale di pagine
$paginator->getItemsPerPage(); // numero di elementi per pagina
$paginator->getItemCount(); // numero totale di elementi, se noto
```

Il paginator aiuta nella formulazione di una query SQL. I metodi `getLength()` e `getOffset()` restituiscono valori che utilizziamo nelle clausole LIMIT e OFFSET:

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

Se abbiamo bisogno di impaginare in ordine inverso, ovvero la pagina n. 1 corrisponde all'offset più alto, utilizziamo `getCountdownOffset()`:

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

Un esempio di utilizzo nell'applicazione si trova nel cookbook [Paginazione dei risultati del database |best-practices:pagination].

Paginator

Avete bisogno di impaginare un elenco di dati? Poiché la matematica della paginazione può essere insidiosa, Nette\Utils\Paginator vi aiuterà.

Installazione:

composer require nette/utils

Creiamo un oggetto paginator e impostiamo le informazioni di base:

$paginator = new Nette\Utils\Paginator;
$paginator->setPage(1); // numero della pagina corrente
$paginator->setItemsPerPage(30); // numero di elementi per pagina
$paginator->setItemCount(356); // numero totale di elementi, se noto

Le pagine sono numerate a partire da 1. Possiamo cambiarlo usando setBase():

$paginator->setBase(0); // numeriamo da 0

L'oggetto ora fornirà tutte le informazioni di base utili per la creazione di un paginator. Potete, ad esempio, passarlo a un template e utilizzarlo lì.

$paginator->isFirst(); // siamo sulla prima pagina?
$paginator->isLast(); // siamo sull'ultima pagina?
$paginator->getPage(); // numero della pagina corrente
$paginator->getFirstPage(); // numero della prima pagina
$paginator->getLastPage(); // numero dell'ultima pagina
$paginator->getFirstItemOnPage(); // numero ordinale del primo elemento sulla pagina
$paginator->getLastItemOnPage(); // numero ordinale dell'ultimo elemento sulla pagina
$paginator->getPageIndex(); // numero della pagina corrente numerata da 0 (indice)
$paginator->getPageCount(); // numero totale di pagine
$paginator->getItemsPerPage(); // numero di elementi per pagina
$paginator->getItemCount(); // numero totale di elementi, se noto

Il paginator aiuta nella formulazione di una query SQL. I metodi getLength() e getOffset() restituiscono valori che utilizziamo nelle clausole LIMIT e OFFSET:

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

Se abbiamo bisogno di impaginare in ordine inverso, ovvero la pagina n. 1 corrisponde all'offset più alto, utilizziamo getCountdownOffset():

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

Un esempio di utilizzo nell'applicazione si trova nel cookbook Paginazione dei risultati del database.

OSZAR »