Dynamické snippety ve 2.0stable – prosím o ukázku
- OK3
- Člen | 91
Nebylo by něco v tomhle videu? https://www.youtube.com/watch?…
Editoval OK3 (6. 2. 2012 16:42)
- Vojtěch Dobeš
- Gold Partner | 1316
Pokusím se krátce shrnout co vím, ale doufám, že nešířím bludy.
Dynamické snippety fungují uvnitř statických snippetů. Příklad:
{snippet container}
{foreach $items as $id} {* $items === [a, b, c] *}
{snippet item-$id}
Something
{/snippet}
{/foreach}
{/snippet}
Při invalidaci je třeba invalidovat onen statický kontejner. To bohužel
způsobí, že se zinvalidují všechny dynamické snippety, a taky se všechny
skutečně pošlou do payloadu (v payloadu však nepřibyde položka
snippet--container
, pouze jednotlivé snippet--item-a
atd., což je dobře :) !). Příklad:
$this->invalidateControl('container');
Aby se odeslala skutečně jen konkrétní položka (řádek tabulky apod.,
prostě jeden dynamický snippet), je třeba (alespoň já bych to tak asi
udělal), nějak ovlivnit pole $items
, na kterém se iteruje. Tedy
při AJAXovém požadavku do něj umístit jen jednu položku ⇒ jeden
dynamický snippet ⇒ jedna položka v payload
.
if ($this->isAjax()) {
$this->template->items = array($this->getParam('id')); // eg. $this->getParam('id') === 'a'
} else {
$this->template->items = array('a', 'b', 'c');
}
Editoval vojtech.dobes (6. 2. 2012 17:39)
- Vojtěch Dobeš
- Gold Partner | 1316
:) Snad brzy vyjde 2.1 a v ní tato úprava: https://github.com/…tte/pull/501