Ajax – něco jako template layer existuje?

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

Ahoj,
jsem v nette začátečník.. a mám možná dost jednoduchou otázku:
Existuje v nette pomoci Ajaxu nějaký template layer? V podstatě myslím to, že si vytvořím v latte dejme tomu tři šablony (div bloky s jinými hodnotami → vyhrál/nevyhrál/skus příště)(nebudou se zobrazovat) a následně mi v presenteru dle podmínky vybere jenom jednu z těch tří šablón, která se zobrazí (samozřejmě přes Ajax, bez refreshu).
Děkuji moc za odpověď, případně se omlouvám za moji češtinu.

Rurij
Člen | 7
+
0
-

emptywall napsal(a):

https://api.nette.org/…ter.php.html#…

díky moc, ale to je změna celého latte (view), ja chci mít v jednom latte víc bloku(divu) a jeden z nich si vyberu.

Editoval Rurij (5. 9. 2016 15:55)

Šaman
Člen | 2666
+
+1
-

Vytvoř si je nejprve jako snippety a až to budeš mít odladěné, tak by se měl dát obsah těch snippetů vyčlenit do externího latte souboru. (Tuším že include a ajax se za určitých podmínek nemají rádi, ale to by mělo platit jen pro ajax v těch includovaných souborech. Ale raději to nejprve odlaď jako obyčejné snippety.)

CZechBoY
Člen | 3608
+
0
-

Asi by to spíš chtělo pořádně popsat problém. tzn. co máš teď, jak to chceš mít, jaký máš problémy.

Rurij
Člen | 7
+
0
-

Já jsem to myslel tak, že si napr do latte dám tři snippety, v presenteru budu mít podmínku, díky které se jeden ze snippetu pak objeví,.. ale předtím se ani jeden nevykreslí.. a budou v něm celý části webu

CZechBoY
Člen | 3608
+
0
-

Můžeš udělat, že snippety budou obsahovat nic a budou tedy „nezobrazené“. Potom při nějakým ajaxovým volání překreslíš snippet a naleješ tam data.

Rurij
Člen | 7
+
0
-

Děkuji moc. Umíš mi prosím tě udělat jednoduchej příklad jak by to fungovalo? Protože s nette fakt nemám moc zkušenosti, a když to uvidím tak to určitě pochopím a budu to moc použít.

Editoval Rurij (6. 9. 2016 11:04)

CZechBoY
Člen | 3608
+
0
-
{block content}
	{snippet a}
		{ifset $writeA}
			A
		{/ifset}
	{/snippet}

	<a n:href="writeA!">redraw a</a>
{/block}
public function handleWriteA()
{
	$this->temlate->writeA = true;
	$this->redrawControl('a');
}

Editoval CZechBoY (6. 9. 2016 11:13)

Rurij
Člen | 7
+
0
-

Díky moc, ale bohužel týmhle způsobem nemůžu vyřešit ten můj příklad.. ale dík :)

CZechBoY
Člen | 3608
+
0
-

Tak pošli ukázku tvoji šablony jak to máš teď/jak bys to chtěl mít a kde si nevíš rady.

Rurij
Člen | 7
+
0
-

CZechBoY napsal(a):

Tak pošli ukázku tvoji šablony jak to máš teď/jak bys to chtěl mít a kde si nevíš rady.

Mohu ten handleWriteA() zavolat nějak z presenteru z funkce napr qvizFormSucceeded? (protože tady se to volá z <a>).

Editoval Rurij (6. 9. 2016 13:42)

CZechBoY
Člen | 3608
+
0
-

Pokud to je ajaxovej request tak klidně můžeš zavolat $this->handleWriteA(); (pokud si v presenteru, jinak můžeš na onSuccess navázat další metodu presenteru a tam zavolat ten handleWriteA).