Přesměrování po volání z latte
- kazz
- Člen | 8
Zdravím,
snažím se o přesmerování po odchycení chyby v komponentě, problém je, že místo korektního přesmerování dojde k vyhození vyjímky „Nette\Application\AbortException“ která není zachycená a tudíš přesměrování neproběhne.
Problém je možné demonstrovat jednoduše např. takto:
Presenter:
public function createComponentTest(){
$this->redirect('this');
}
Latte:
{control test}
Z toho vyplývá že není možné používat přesmerování uvnitř komponent výjímaje callbacku z formuláře. Nevěřím tomu že je toto chování korektní. Můj konkretní případ je komponenta na pop-up-okna která se vykresluje přez snippet, její nastavení se načítá z cache a potřebuju z ní volat redirect což momentálně není možné. Pokud bude fungovat výše uvedená demonstace bude fungovat i přesmerování z komponenty.
Můj dotaz zní: je toto chování feature nebo bug ? Pokud feature jak řešíte přesmerování z komponent ?
Děkuji
- David Matějka
- Moderator | 6445
Toto je ocekavane chovani, ze nepujde presmerovat pri vykreslovani. Proc konkretne potrebujes presmerovat? a kde mas v te komponente na popup redirect? v render?
- David Matějka
- Moderator | 6445
v render muze byt pozde – i kdyby se zachytila vyjimka, tak by neslo presmerovat kvuli tomu, ze uz muze byt neco vykresleno.
asi by slo to resit v metode attached (podobne jako je to tady)
s tim, ze tu komponentu budes muset rucne inicializovat v presenteru pres
$this['test']
, aby se vytvorila driv nez pri renderovani