Po odeslání formuláře se často potřebujeme vrátit na předchozí stránku.
Řešení: Před přechodem na stránku s formulářem uložíme url počáteční stránky do sessions. Po odeslání formuláře a vykonání potřebného kódu přečteme uloženou url adresu a provedeme přesměrování.
Abychom tento proces nemuseli provádět ručně, využijeme metody Nette storeRequest() a restoreRequest(), které jsou k této činnosti určeny.
Základní nastavení
V základním presenteru si vytvoříme proměnou pro přenášení hodnoty zpětného odkazu, nazveme ji např. backlink:
<?php class BasePresenter { /** * @var string * @persistent */ public $backlink = ''; }
Uložení url
Při přesměrování uložíme url aktuální adresy pomocí metody storeRequest():
$this->redirect('Sign:in', ['backlink' => $this->storeRequest()]);
Návrat na uloženou url
K vrácení na uloženou url adresu stránky použijeme metodu restoreRequest().
Následně voláme metodu redirect() pro případ, kdy proměnná $backlink žádnou uloženou url adresu neobsahuje.
$this->restoreRequest($this->backlink); $this->redirect('Home:');