Odkaz na funkci
- Aldaris
- Člen | 6
Ahoj zacinam s Nette a dostal jsem se do problemu, kdy mam v tabulce
vypsane data a u kazdeho radku mam obrazek krizku na vymazani.
Poradte, prosim, jak udelat z obrazku klikaci tlaciko, ktere mi spusti nejakou
funkci? Potrebuji presmerovat na stejnou stranku a ve funkci, treba smaz($id)
bude kod na smazani zaznamu z databaze.
- Ondřej Brejla
- Člen | 746
Nejjednodušší způsob, v aktuálním presenteru, který stránku
zpracovává, si vytvoř funkcni
public function handleDelete($id) { /* tady zpracuju smazání předaného id a přesměruji na adresu bez id */}
a v šabloně obal onen obrázek křížku do a
tagu, s tím, že
href
atribut bude vypadat následovně:
<a href="{link delete! $data->id}"><img...muj super krizek obrazek...></a>
.
V $data->id předpokládám aktuální id mazaného vypsaného prvku.
To by mělo fungovat. Nicméně by si měl vědět, že je zde možnost
CSRF
útoku. Takže by bylo záhodno ho nějak ošetřit (můžeš
zkusit hledat na fóru). Dále to, že změna stavu řešená přes
GET
(čti odkaz) není ideální a řešit by se měla pokud možno
přes form a POST
. Ale toto implementovat není pro začátečníka
nejjednodušší, takže pro nejrychlejší implementaci funkčnosti zkus
použít onu možnost s odkazem popsanou výše.
Snad ti to trošku pomůže.
Jinak doporučuji si přečíst seriál na Zdrojáku.
- Aldaris
- Člen | 6
Diky za odpoved
Predelavam funkcnost jednoho vytvoreneho projektu (neni muj) a je to tam udelane tak, ze v DefaultPresenteru ziskam v renderovaci funkci hodnotu id z databaze a je ulozena v promenne $cinnost[‚id‘].
V template mam:
<div class=modul-1>
<center>{!$obsah}<br /><br /></center>
</div>
a v presenteru pak toto
<?php
public function renderAdministraceCinnosti()
{
...
$obsah = <a href=\"{link delete! $cinnost['id']}\"><img src=\"images/no.gif\" alt=\"Smazat činnost\" title=\"Smazat činnost\"></a>";
$this->template->obsah = $obsah;
...
}
public function handleDelete($id)
{
$dotaz = $this->db->query("DELETE FROM cinnosti_seznam WHERE id=%i", $id);
}
?>
Akorat mi to nic neudela, proste me jen presmeruje na prihlasovaci stranku.. Kde mam chybu?
je to jen vycuc kodu, tak snad jsem na neco nezapomnel
Serial si pak proctu, ale momentalne bych to prave potreboval co nejjednoduseji
Editoval Aldaris (23. 11. 2009 13:22)
- Ondřej Mirtes
- Člen | 1536
Ten $obsah v této podobě patří do šablony, pak ti bude fungovat i makro {link}.