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:zivotni_cyklus_presenteru

Ajax - životní cyklus presenteru

Při používání ajaxu a snippetů je potřeba vědět, že nejdříve proběhne metoda handle*() a až po ní render*() https://doc.nette.org/cs/application/presenters#toc-zivotni-cyklus-presenteru

Metoda render*() tak může vynulovat změny, které ale chcete provést v handle*(). Řešením je v render*() zkontrolovat, jestli už nebyla nějaká proměnná nastavena dříve.

HomepagePresen­ter.php
<?php
 
declare(strict_types=1);
 
namespace App\Presenters;
 
use Nette;
 
final class HomepagePresenter extends Nette\Application\UI\Presenter
{
 
    public $pocet;
 
    public function handlePlus(int $pocet){
 
        $this->pocet = $pocet + 1;
 
        $this->redrawControl('pocet');
    }
 
    public function renderDefault(){
 
        if(!$this->pocet){
            $this->pocet = 1;
        }
 
        $this->template->pocet = $this->pocet;
    }
 
}
defau­lt.latte
{block content}
 
{snippet pocet}
<div>
    {$pocet}
</div>
 
<a n:href="plus! pocet => $pocet">Zvyš počet</a>
 
{/snippet}
 
 
<script src="https://unpkg.com/naja@2/dist/Naja.min.js"></script>
 
<script>
    naja.initialize();
</script>
nette/ajax/zivotni_cyklus_presenteru.txt · Poslední úprava: 2025/03/21 14:14 autor: Zdeněk Havlík

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki