Jak udelat AJAXovy popup (DIV)?

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

Ahoj,

učím se ajax v nette a teď jsem narazil na problém, jak udělat ajaxovy popup.
Dejme tomu ze mam action Default:list která zobrazí seznam objednávek, kde je u každé položky odkaz, ktery by měl zobrazit popup okno (div) kde se zobrazí položky objednávky. (klasika původni okno zčerná a zobrazí se okno s divem)

Napadlo mě, že to budu řešit takto:

  1. v list.latte si udělam snippet popup (čili v seznamu objednávek)
  2. odkazem budu ajaxove volat další action (Default:items), ta bude vracet jen ten div co se ma zobrazit.
  3. z Default:items invaliduji control popup (jenže ten je v jiné action)

Body 1 a 2 mám, ale u bodu 3 mám problém, jak zavolat invalidaci contrulu pro jinou action?

Snad jsem to napsal srozumitelně, možná to řeším uplně blbě a proto bych byl rád kdyby mí někdo poradil či ještě líp poslal nějaký example, nebo aspoň odkaz kde se něco podobného dá nastudovat.

dík Míra

Panda
Člen | 569
+
0
-

Pokud má ta action vracet jen ten div, tak Ti nic nebrání si v metodě render dané action (tzn. renderItems) zavolat $this->invalidateControl('popup'). Fígl je v tom, že musíš mít ten snippet 2×: jednou v tom původním view (list.latte), podruhé v items (items.latte). Když se budou jmenovat stejně, tak se Nettí AJAX nebude starat o to, z jakého view mu snippet přišel.

pawouk
Člen | 172
+
0
-

No jestli to dobře chápu tak si jen udělěj handle… Ten vždy nejdřív zavolá akci a pak teprve proběhne (viz zivotni cyklus presenteru), takže tam mužeš klidně invalidovat…

Kurtas
Člen | 109
+
0
-

Díky! Ty dva snippety pomohly