Zdeňkovo poznámky

Co zjistím a opakovaně vyheldávám, tak sem zapíšu

Uživatelské nástroje

Nástroje pro tento web


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

HomepagePresen­ter.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;
    }
 
}
defau­lt.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

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki