Doplnění quickstart – mazání příspěvků
- Berry
- Začátečník | 70
Ahoj, prolouskal jsem se quickstartem až na konec. Ted zkouším co dál. Třeba přidat mazání příspěvku. Chci se zeptat jak nejlépe by jste to řešili
V šabloně příspěvku přidám odkaz na delete.latte. A moje myšlenka je tam mít dva odkazy ANO | NE. Při kliknutí na ne se vrátit zpět na příspěvek a při ano smazat z databáze.
Upravil jsem PostPresenter aby mi po kliknutí na smazat naběhla šablona delete
public function actionDelete($postId)
{
if (!$this->getUser()->isLoggedIn()) {
$this->redirect('Sign:in');
}
$post = $this->database->table('posts')->get($postId);
if (!$post) {
$this->error('Příspěvek nebyl nalezen');
}
}
Jak ideálně postupovat dále.
- Felix
- Nette Core | 1247
Na mazani bych spise doporucoval signaly resp. handle<> metody.
https://doc.nette.org/…n/components#…
Hodi se, prevazne, kdyz nechceme mit specialni sablonu na dany krok. Confirm na mazani bych spise vyresil javascriptove, treba takto.
<a n:href="delete!, id => $id" onClick="return confirm('Opravdu smazat?');">Smazat</a>
- Berry
- Začátečník | 70
Felix napsal(a):
Na mazani bych spise doporucoval signaly resp. handle<> metody.
https://doc.nette.org/…n/components#…
Hodi se, prevazne, kdyz nechceme mit specialni sablonu na dany krok. Confirm na mazani bych spise vyresil javascriptove, treba takto.
<a n:href="delete!, id => $id" onClick="return confirm('Opravdu smazat?');">Smazat</a>
Díky, kouknu na to.
- Berry
- Začátečník | 70
Tak jsem v rychlosti zkusil vytvořit v app/componets DeleteControl.php
<?php
use Nette\Application\UI\Control;
class DeleteControl extends Control
{
}
?>
Tam bych chtěl dát
<?php
public function handleDelete
{
if (!$this->isClickable($x, $y)) {
throw new Nette\Application\UI\BadSignalException('Action not allowed.');
}
// ... processing of signal ...
}
?>
A jako signál něco takového
<?php
$this->database->table('posts')->get($postId)->delete();
$this->flashMessage('Prispevek smazan');
?>
Problém je, že v tom mám guláš a hlavně laděnka po mě chce tu HendleDelete v PostPresenteru
- kejlicz
- Člen | 201
A proč to máš v komponentě. To potřebuješ? Pro začátek si to zkus normálně v presenteru.
PostPresenter.php
public function handleDelete($id)
{
//tady to smažeš z DB, případné předtím ověříš, zda má na mazání uživatel práva
$this->flashMessage("Smazáno");
$this->redirect("this");
}
tohle v šabloně
<a n:href="delete!, id => $id" onClick="return confirm('Opravdu smazat?');">Smazat</a>
A při kliknutí na ten odkaz se provede handleDelete a stránka se refreshne.
- Berry
- Začátečník | 70
kejlicz napsal(a):
A proč to máš v komponentě. To potřebuješ? Pro začátek si to zkus normálně v presenteru.
PostPresenter.php
public function handleDelete($id) { //tady to smažeš z DB, případné předtím ověříš, zda má na mazání uživatel práva $this->flashMessage("Smazáno"); $this->redirect("this"); }
tohle v šabloně
<a n:href="delete!, id => $id" onClick="return confirm('Opravdu smazat?');">Smazat</a>
A při kliknutí na ten odkaz se provede handleDelete a stránka se refreshne.
Takhle jsem si to představoval, jen při studiu těch výše uvedených signálů jsem myslel, že to bude třeba. Ale takhle to funguje také a pro ten quickstart to asi stačí.