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
+
0
-

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
+
+4
-

Nemuzes pouzivat pokemon style chytani vyjimek. Redirect totiz vyvolava Nette\Application\AbortException

fary
Člen | 155
+
0
-

Myslel sem, že už sem zapomněl programovat. Hodil sem ten redirect za poslední catch a uz to jede dobre. Díky.