Jak udelat AJAXovy popup (DIV)?
- Kurtas
- Člen | 109
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:
- v list.latte si udělam snippet popup (čili v seznamu objednávek)
- odkazem budu ajaxove volat další action (Default:items), ta bude vracet jen ten div co se ma zobrazit.
- 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
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
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…