AJAX – ukoncenie v handle

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

Zdravim,
je prosim vas nejaka metoda ako elegantne ukoncit signal handleNieco bez toho aby siel znovu renderDefault?

public function handleUzivatel($id) {
   	if ($this->isAjax()) {
		[...]
   		$this->redrawControl('snippet--uzivatelia-' .$id);
   		exit();
   	}
}

S tym exitom to vyzera divne.

David Matějka
Moderator | 6445
+
+1
-

mohlo by jit pouzit $this->sendTemplate().. ale proc se potrebujes vyhnout renderDefault?

CZechBoY
Člen | 3608
+
0
-

Pokud vypustis render tak se zadnej snippet nejspis neprekresli.

ondrej1
Člen | 13
+
0
-

Ide o prispevky, ktore taguju uzivatelia. Ak otaguju 1 prispevok a prispevkov na stranke je 100, mal som taky dojem, ze renderDefault, nacita vsetkych 100 prispevkov znovu.

Edit: ano, neprekresluje sa nic, aj ked ajaxove volanie prebehne a zapise do databazy

Editoval ondrej1 (23. 7. 2016 19:07)

GEpic
Člen | 566
+
+1
-

ondrej1 napsal(a):

Ide o prispevky, ktore taguju uzivatelia. Ak otaguju 1 prispevok a prispevkov na stranke je 100, mal som taky dojem, ze renderDefault, nacita vsetkych 100 prispevkov znovu.

Edit: ano, neprekresluje sa nic, aj ked ajaxove volanie prebehne a zapise do databazy

Proto můžeš použít toto:

public function renderDefault()
{
	if ($this->isAjax()) {
		# nedelej nic
	} else {
		# nacti vypis prispevky, nebo to obratit na if (!$this->isAjax())
	}
}

Ale co jsem tak pochopil z toho co píšeš, ty ani nic překreslovat nepotřebuješ, ne? Jen zapsat data a neposílat do šablony žádnou odpoveď či tak.

Editoval GEpic (23. 7. 2016 19:50)

ondrej1
Člen | 13
+
0
-

Nie, snippet s tagmi k 1 prispevku potrebujem prekreslit, aby pribudol ten novy tag k prispevku.
Ale funguje to takto:

if ($this->isAjax()) {
	$this->uzivatel->insertTag($id);
	$this->redrawControl('uzivatelia');
}

teda prekreslit len obalovaci snippet

A ked mam ten exit() alebo je v renderDefault na zaciatku podmienka

	if ($this->isAjax()) return;

naozaj neprekresli ziadny snippet, celkom tomu nechapem