Ako presmerovať na predchádzajúci pohľad?
- romiix.org
- Člen | 343
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)
- romiix.org
- Člen | 343
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?
- romiix.org
- Člen | 343
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
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?