Ako presmerovať na predchádzajúci pohľad?

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

Zdravím!
Prelúskal som tutoriál Blog a chcel som sa vrhnúť na nejaké vylepšenia pre prehĺbenie znalostí.

Zasekol som sa pri pridávaní možnosti mazať komentáre.
Vytvoril som v CommentsModel

	public static function delete($id)
	{
		if (dibi::query('
			DELETE FROM [comments]
			WHERE [id] = %i', $id
		)) return true;
	}

do HomepagePresenter

	public function renderDeleteComment($id = 0)
	{
		if (CommentsModel::delete($id))
			$this->flashMessage('Komentár bol úspešne odstránený');
		else
			$this->flashMessage('Komentár sa nepodarilo odstrániť');
		$this->redirect('default');
	}

a do single.phtml som pridal odkaz

<a href="{link Homepage:deletecomment $comment['id']}">zmazať</a>

Všetko funguje, až na to, že po zmazaní komentára presmeruje na Homepage:default a nie na adresu z ktorej to bolo zmazané, konkrétne {link single $post[‚id‘]}

Existuje nejaká možnosť redirect-u „späť“ na pohľad ktorý akciu vyvolal?
Ďakujem

Editoval romiix.org (19. 1. 2011 10:53)

Lopo
Člen | 277
+
0
-

a co tak pouzit signal ? tj link nebude ‚deleteComment‘ ale ‚deleteComment!‘, miesto renderDeleteComment bude handleDeleteComment a v nom uz nemusi byt ziadne presmerovanie

romiix.org
Člen | 343
+
0
-

Jasné, už som to niekde s tým handlerom videl, ale neviem to dohladať.

Žiaľ aj tak mi to nefunguje.
V HomepagePresenter.php som funkciu renderDeleteComment premenoval na

public function handleDeleteComment($id = 0)

šablónu single.phtml som zmenil na

<a href="{link Homepage:deletecomment! $comment['id']}">zmazať</a>

Ladenka mi potom vypíše:
Component with name 'Homepage' does not exist.

Volám handler správne?

Ondřej Brejla
Člen | 746
+
0
-

<a href="{link deleteComment! $comment['id']}">zmazať</a>?

romiix.org
Člen | 343
+
0
-

Vďaka, handler už pracuje, ale stále to nevyriešilo problém s presmerovaním.
HomepagePresenter

	public function handleDeleteComment($id = 0)
	{
		if (CommentsModel::delete($id))
			$this->flashMessage('Komentár bol úspešne odstránený');
		else
			$this->flashMessage('Komentár sa nepodarilo odstrániť');
	}

single.phtml

<a href="{link deletecomment! $comment['id']}">zmazať</a>

Po zmazaní komentára nezostane „starý“ pohlad (homepage/single/2), ale defaultný (/homepage/default – /). Nechápem prečo, redirect tam predsa nie je.

romiix.org
Člen | 343
+
0
-

Našiel som chybu ale neviem ju odstrániť.
napr.:
som na adrese homepage/single/4

<a href="{link deletecomment! $comment['id']}">zmazať</a>

generuje link homepage/single/12?do=deletecomment
pričom by to podla mňa malo generovať niečo ako homepage/single/4?do=deletecomment&id=12
a na to by mal reagovať handler.
Handler sa „vráti“ na adresu homepage/single/12 ale tá neexistuje, preto ide na Homepage:default.
Zatiaľ sa mi to nepodarilo, asi to skúsim odznovu. „Nebije“ sa tam náhodou id komentára s id článku v route?

mkoubik
Člen | 728
+
0
-

Skus

public function handleDeleteComment($commentId = 0)
{
...
}
romiix.org
Člen | 343
+
0
-

Ďakujem!!!
Vyriešené