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.
- HomepagePresenter.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; } }
- default.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