Seitennummerierung
URL-basierte Paginierung mit Vorlagenhilfsprogrammen.
Die Paginierung in Nibiru ist URL-gesteuert. Die Seitenzahl ist ein URL-Segment (/products/index/page/3), kein Abfragezeichenfolgen-Parameter. Die Klasse Pageination – achten Sie auf die Rechtschreibung – liest es, berechnet Offsets und weist ein pagination-Array in Smarty zu.
Verbinden Sie es ein
Abschnitt betitelt „Verbinden Sie es ein“use Nibiru\Pageination;use Nibiru\Model\products;
class productsController extends Controller{ public function pageAction() { $products = new products(); Pageination::setEntriesPerPage(25); / optional; default from INI Pageination::setTable($products); $rows = Pageination::loadTableAsArray();
View::assign(['products' => $rows]); }
public function navigationAction() { JsonNavigation::getInstance()->loadJsonNavigationArray(); }}Pageination::setTable(...) liest die URL, berechnet Offsets und weist die Navigationsmetadaten über die Variable pagination dem Template zu.
Rendern im Template
Abschnitt betitelt „Rendern im Template“{include 'shared/header.tpl'}<body>{include file="navigation.tpl"}
<main class="container"> <table class="table"> {foreach $products as $p} <tr><td>{$p.id}</td><td>{$p.name|escape}</td></tr> {/foreach} </table>
{include file="pageination.tpl"}</main>{include 'shared/footer.tpl'}</body>Oder rendern Sie inline:
<nav class="pagination"> {if $pagination.previous} <a href="{$pagination.paginationPath}/page/{$pagination.previous}">←</a> {/if}
{foreach $pagination as $entry} {if isset($entry.page)} <a class="{if $entry.page == $pagination.current}active{/if}" href="{$pagination.paginationPath}/page/{$entry.page}"> {$entry.page} </a> {/if} {/foreach}
{if $pagination.next} <a href="{$pagination.paginationPath}/page/{$pagination.next}">→</a> {/if}</nav>URL-Format
Abschnitt betitelt „URL-Format“/<controller>/<action>/page/<N>Beispiele:
/products/index/page/2/products/page/2 ; if action is omitted, "index" is implied/users/list/page/7Die paginationPath Vorlagenvariable ist der Pfad ohne /page/N — fügen Sie Ihre eigene Seitenzahl hinzu, wenn Sie Links generieren.
Konfiguration
Abschnitt betitelt „Konfiguration“[SETTINGS]entries.per.page = 25Dies ist die globale Standardeinstellung; überschreiben Sie sie pro Controller mit Pageination::setEntriesPerPage() vor setTable().
Häufige Fallen
Abschnitt betitelt „Häufige Fallen“- Rechtschreibung. Die Klasse heißt
Pageination, das Trait heißtAttributes\Pageination, die Vorlage heißtpageination.tpl. Es wird auf diese Weise in der gesamten Frameworks geschrieben. Streiten Sie sich nicht damit. setTable()Reihenfolge. Rufen SiesetEntriesPerPage()vorsetTable()auf, andernfalls werden die Offsets gegen den Standard berechnet.- Seite 0 ist ungültig. Wenn ein Benutzer
/page/0anfordert, behandeln Sie es als1. Nibiru macht dies intern, aber wenn Sie eigene Paginierungslinks erstellen, normalisieren Sie die Eingaben.