Redirect při smazání položky z databáze (v rámci ajaxu)
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- fary
- Člen | 155
V presenteru mám takovýto kód:
/**
* @param string $categoryId
*/
public function handleDeleteSubCategory($categoryId)
{
if ($this->isAjax()) {
try {
$this->categories->delete($categoryId);
$this->flashMessage('Category has been deleted.');
$this->redirect('default');
} catch (CategoryNotEmptyException $e) {
$this->flashMessage($e->getMessage());
$this->redrawControl('wrapper');
$this->redrawControl('flashes');
} catch (\Exception $e) {
$this->flashMessage('An error occurred.');
$this->redrawControl('wrapper');
$this->redrawControl('flashes');
}
}
}
Jde mi o to, že pokud se pokusím smazat kategorii článků, která stále
obsahuje buď jiné podkategorie anebo jiné články, zachytím vyjímku
CategoryNotEmptyException
, vypíšu fash message a překreslím
potřebné prvky, takže se stránka (při redirectu) nevyroluje nahoru. Pokud
ovšem kategorie smazat lze (neobsahuje žádné podkategorie ani články),
potřeboval bych provést redirect na actionDefault
, po kterém se
dostanu do první kategorie v pořadí. Problém je v tom, že ten redirect se
vůbec neprovede. Logicky nelze jen překreslit snippety, protože bych se
objevil v neexistující kategorii. Nevím, jak toto vyřešit.
- David Matějka
- Moderator | 6445
Nemuzes pouzivat pokemon style chytani vyjimek. Redirect totiz vyvolava Nette\Application\AbortException