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