Dynamické snippety – vysvětlení
- kolsi
- Člen | 131
Ahoj,
mohl bych poprosit o menší vysvětlení k tomuto článku https://doc.nette.org/…mic-snippets
Možná jsem trochu mimo, ale nějak v něm vůbec nechápu smysl, a nebo jsem třeba jenom přehlídnul nějakou drobnost – v tom případě se předem omlouvám :) Ale když mám ten seznam článků:
{snippet articlesContainer}
<article n:foreach="$articles as $article">
<h2>{$article->title}</h2>
<div class="content">{$article->content}</div>
{snippet article-$article->id}
{if !$article->liked}
<a n:href="like! $article->id" class=ajax>to se mi líbí</a>
{else}
<a n:href="unlike! $article->id" class=ajax>už se mi to nelíbí</a>
{/if}
{/snippet}
</article>
{/snippet}
Jak pak aktualizuji jeden konkrétní článek? V tom článku čtu, že stejně musím volat:
$this->redrawControl('articlesContainer');
takže vůbec nevidím smysl v tom, že se jedná o nějaké dynamické snippety. Kdyby tam nebyl ten řádek „{snippet article-$article->id}“, tak by se to chovalo úplně stejně. Nebo jak se v tomto případě pozná, že chci překreslit pouze snippet „article-7“ a ostatní ponechat beze změny?
Něco mi uniká?
Editoval kolsi (25. 1. 2016 15:16)
- David Matějka
- Moderator | 6445
rozdil je v tom kodu nize:
public function handleLike($articleId)
{
...
if ($this->isAjax()) {
...
$this->template->articles = array(
$this->connection->table('articles')->get($articleId)
);
} else {
...
}
public function renderDefault()
{
if (!isset($this->template->articles)) {
$this->template->articles = $this->connection->table('articles');
}
}
pri nejake akci posles do sablony pouze clanky (clanek), ktery se ma prekreslit a ne vsechny.
- kolsi
- Člen | 131
Díky, tohle jsem nějak pochopil a skutečně mi to tak funguje. Ale ještě na tom nechápu, jak vlastně pozná, že má invalidovat jenom ten jeden konkrétní snippet? Co když ve skutečnosti nastala situace, že jsem všechny články smazal a ten „foreach“ teď má vykreslit pouze ten jeden článek?
- David Matějka
- Moderator | 6445
Co když ve skutečnosti nastala situace, že jsem všechny články smazal a ten „foreach“ teď má vykreslit pouze ten jeden článek?
tohle dyn. snippety nijak snadno neumeji. dynamicke snippety slouzeji k aktualizaci prvku