vzmazanie polozky z DB podla ID v cykle

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

Ahojte,

lamem si hlavu nad tym, ako spravit nasledovne:

mam cyklus foreach, kde kazdy riadok je ine cislo (id) a teda v kazdom riadku by som potreboval dat nejake tlacidlo/odkaz, aby ked ho stlacim, v tom prislusnom riadku, tak mi vymazalo polozku z DB prave s tym ID

<?php
riadky
1
2
3 ->kliknem a vymaze mi riadok z DB s tymto ID
4
...
?>

troska podrobne … nebol som si isty, ci som to zrozumitelne vysvetlil
… dik za odpovede

Editoval Takeshi (16. 3. 2014 23:18)

Takeshi
Člen | 596
+
0
-

Inak polozim otazku, ktorej vyriesenie tiez pomoze …

ked mam v cykle vykreslene v sablone cisla(id-cka), tak ako dane cislo/id pomocou buttonu/odkazu poslem na inu stranu ?

Mysteria
Člen | 797
+
0
-
<a n:href='deleteItem $item->id'>Delete Item</a>
public function renderDeleteItem($itemID) {
	$this->model->deleteItem($itemID);
	// a přesměrovat na výpis všech itemů
}

Editoval Mysteria (17. 3. 2014 0:34)

thm
Člen | 147
+
0
-

Jsem sice také začátečník, ale viděl bych to spíše na signál… Ten se potom může volat ze kretéhokoliv view

<a n:href='deleteItem! $item->id'>Delete Item</a>

A v presenteru potom

public function handleDeleteItem($itemID) {
    $this->model->deleteItem($itemID);
    $this->redirect('this');
}
Šaman
Člen | 2666
+
0
-

B je správně. Jestliže chceš provést nějakou akci a nebudeš nic zobrazovat a hned po té akci přesměruješ, tak použij handle.

Takeshi
Člen | 596
+
0
-

Ďakujem za odpovede !

David Matějka
Moderator | 6445
+
0
-

Pri mazani timhle zpusobem vznika riziko CSRF utoku (kratce – nekdo ti posle odkaz http://example.com/clanek/smazat/1, ty na to kliknes, budes prihlasenej a smazes to). resenim je bud pouzit secured signals od hracha – https://github.com/…ecured-links, php 5.4+ only, pokud jsi na nizsi verzi, budes muset ctrl+c a ctrl+v toho kodu do tveho basepresenteru.

Jako dalsi moznost muzes pouzit potvrzovaci formular na smazani, viz treba CD collection v examplech. pripadne muzes dat ke kazdemu radku rovnou formular (pomoci multiplieru)