nette:ajax:nacist_dalsi
Naja - načíst další
S knihovnou Naja můžete appendování („načíst další“) realizovat pomocí atributu:
data-naja-snippet-append
- HomepagePresenter.php
<?php declare(strict_types=1); namespace App\Presenters; use Nette; use Nette\Utils\Paginator; final class HomepagePresenter extends Nette\Application\UI\Presenter { public $data = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]; public $strana = null; public $naStranu = 2; public function handleNacistDalsi(int $strana = 1){ $this->strana = $strana + 1; $this->payload->postGet = true; $this->payload->url = $this->link('this',['strana' => $this->strana]); $this->redrawControl('data'); $this->redrawControl('strana'); } public function renderDefault(int $strana = 1){ if(!$this->strana){ $this->strana = $strana; } $paginator = new Paginator(); $paginator->setItemCount( count($this->data) ); $paginator->setPage($this->strana); $paginator->setItemsPerPage($this->naStranu); $this->template->data = array_slice($this->data, $paginator->getOffset(), $paginator->getItemsPerPage()); $this->template->paginator = $paginator; } }
- default.latte
{block content} <h1>Načíst další</h1> <div n:snippet="data" data-naja-snippet-append> <div n:foreach="$data as $int">{$int}</div> </div> <div n:snippet="strana"> {if !$paginator->isLast()} <a class="ajax" n:href="nacistDalsi! strana => $paginator->getPage()">Načíst další</a> {/if} <div> {for $i = 1; $i <= $paginator->getPageCount(); $i++} {if $paginator->getPage() === $i} {$i} {else} <a n:href="this strana => $i">{$i}</a> {/if} {/for} </div> </div> <script src="https://unpkg.com/naja@2/dist/Naja.min.js"></script> <script> naja.initialize(); </script>
nette/ajax/nacist_dalsi.txt · Poslední úprava: 2025/03/21 14:11 autor: Zdeněk Havlík