Překreslení snippetu presenteru z komponenty

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
chikeet
Člen | 160
+
0
-

Zdravím,
řeším celkem triviální problém:

  • v hlavičce stránky mám snippet (konkrétně nákupní košík)
  • níž ve stránce mám komponenty pro ajaxové přidávání produktů do košíku
  • ajaxová obsluha přidání produktu do košíku aktualizuje počet produktů, překreslí snippet, ale v hlavičce se zobrazí vždy ta předchozí hodnota (tzn. hodnota, která byla aktuální před zpracováním posledního ajaxového požadavku)

Zkoušela jsem všechno možné, updatovat proměnné v šabloně presenteru public metodou volanou z komponenty, tahat v šabloně aktuální hodnoty z properties presenteru, nic nefungovalo tak, aby byly hodnoty ve snippetu košíku aktuální (nemluvě o tom, že se mi ani jedno z těch řešení zrovna nezamlouvá).

Jak dosáhnout toho, aby se v presenteru překreslil snippet, kterému už byly podle všecho předány proměnné ještě před voláním ajaxové handle dotyčné komponenty?

Lukeluha
Člen | 130
+
0
-

Tipnul bych si, že přidání do košíku provádíš v handleru. Stejně tak v handleru provádíš redrawControl. A zároveň bych si tipnul, že do šablony předáváš data o košíku v metodě action :) Životní cyklus je action → handle → render. Dej si pozor na toto pořadí, načítání do košíku udělej v metodě render a vše bude fungovat :)

chikeet
Člen | 160
+
0
-

Huh. Tak chyba byla klasicky mezi klávesnicí a židlí, prostě jsem zapomněla updatovat data košíku v service pro košík (mám tam na to lazy getter). Jinak do šablony předávám data snippetu v beforeRender, protože jde o data z layoutu, které se zobrazují na všech stránkách – jen pro doplnění.

Editoval chikeet (10. 6. 2015 22:35)

Lukeluha
Člen | 130
+
0
-

Ok, tak hlavně že je to vyřešeno :)