Automatický přepis redirect na forward
- Mikulas Dite
- Člen | 756
Zajímalo by mě, jestli je nějaký příklad zpracování ajaxu, kde
v nonjs verzi se redirectuje, ale v ajaxové ne. Jasně,
redirect('this')
, ale to je podle mě tak jediný. Takže si
říkám, zda by fungoval automatický převod mezi redirectem a forwardem,
založený na isAjax()
. Ušetřilo by to docela hodně
zbytečného kódu.
- Mikulas Dite
- Člen | 756
Tak záleží. Když to ale nebudeš brát podle toho, jak to funguje nyní: opravdu potřebujeme mít dvě různé funkce pro to stejné? Všechny vypadají takhle:
if (!$this->isAjax()) {
$this->redirect('nejaky link');
} else {
$this->forward('nejaky link - uplne ten stejny');
}
A pokud by stejně bylo něco v ajaxovém scopu navíc, tak se nic neděje. Prostě se už napíše, ale to je jenom zlomek případů, kdy se používá isAjax konstrukce.
\\Edit:: To rozhodně nebrání, ale chtěl jsem znát nějaké odůvodnění proč je to potřeba zvlášť.
Editoval Mikulas Dite (29. 3. 2010 21:13)
- redhead
- Člen | 1313
No pokud by se jednalo např o signál, tak nemám potřebu nic forwardovat, prostě se provede co potřebuji (změna nějaké hodnoty např. a nepotřebuju vykreslovat nějaký jiný view). Při non-ajax už bych redirectoval třeba na this, aby to uživatel nespustil znova F5-kou.. Aspoň to mě teď napadlo.
U nějakého jiného (dost specifického, nenašel jsem příklad) signálu bych třeba forwardovat potřeboval. Je to prostě podle strategie, pak zas bude někdo nadávat proč se to forwarduje, když to nepotřebuje, to přetížení je navíc na pár řádků..
- Mikulas Dite
- Člen | 756
bazo i redhead napsali:
v neajaovom redirectujem najviac na ‚this‘
Ano, to jsem psal hned na začátku, takovýhle redirect by se pro ajax neuskutečnil, to je triviální ošetřit.
bazo napsal:
… a ak chcem redirect inam, tak chcem, aby sa dial aj ked je to ajax. takze mne by takato funkcnost dokonca prekazala.
Jo tohle je to, co sem potřeboval slyšet (ale stejně je to trošku podivný, protože když se v ajax-response vrátí akorát redirect, tak by rovnou mohl proběhnout neajaxově, bylo by to složitější ošetřit pokud je to dynamicky, ale aplikace by se tím zrychlila).