default redirect

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Lopo
Člen | 277
+
0
-

bolo by mozne nastavit redirect() tak, aby v pripade volania bez parametrov redirectol na default routu ?
dost ma otravuje ze dost casto to musim pisat do redirectu …
ale hlavny problem nastane az sa rozhodne ze default stranka bude uplne iny presenter:view, ked to vsetko budem musiet dohladavat a prepisovat

Ondřej Mirtes
Člen | 1536
+
0
-

Lopo napsal(a):

bolo by mozne nastavit redirect() tak, aby v pripade volania bez parametrov redirectol na default routu ?
dost ma otravuje ze dost casto to musim pisat do redirectu …
ale hlavny problem nastane az sa rozhodne ze default stranka bude uplne iny presenter:view, ked to vsetko budem musiet dohladavat a prepisovat

Tak si na to udělej konstantu v BasePresenteru :)

abstract class BasePresenter extends Presenter {

  const DEFAULT_ROUTE = 'Default:';

  ...
$this->redirect(self::DEFAULT_ROUTE);

Editoval LastHunter (20. 7. 2009 8:05)

Lopo
Člen | 277
+
0
-

mno lenze ono je to stale pisanie navyse … stale tam treba nejaky parameter predat …
podla mna by nebolo spatne keby sa routeru pridal priznak default routy a redirect() by si to potom sam dokazal zistit a v pripade potreby pouzit

proste ‚lenivost nadovsetko‘ :)

Editoval Lopo (20. 7. 2009 9:20)

David Grudl
Nette Core | 8144
+
0
-

Žádná routa ale není výchozí, routy jsou jen cesty k presenterům.

Lopo
Člen | 277
+
0
-

David Grudl napsal(a):

Žádná routa ale není výchozí, routy jsou jen cesty k presenterům.

to samozrejme viem …
co tak keby v botstrape stacilo niektorej route dat index ‚default‘ ?
tj miesto $router[]=new Route(‚index.php‘, array(…), Route::ONE_WAY) by sa 1× objavilo $router[‚default‘]=new Route(‚index.php‘…) a redirect by potom tuto default routu pouzil …
pripada mi to ako pomerne logicke a dost sa cudujem ze take nieco ako default routa pre redirect zatial neni

zatial to mam riesene vlastnou redirect metodou v BasePresenter, ale lepsie mi pride mat toto riesene priamo jednoduchym nastavenim v bootstrape bez potreby cokolvek dalsie niekde inde dopisovat

David Grudl
Nette Core | 8144
+
0
-

Pochop, že není potřeba mít default routu, protože odkaz míří vždy na nějaký cíl (tj. presenter & action) a jaká se zvolí routa, je čistě v režii frameworku.

ales.kafka
Člen | 34
+
0
-

Využiju tohoto vlákna a postnu tu taky nápad na rozšíření ->redirect(...). Sice se dá podobné věci dosáhnout i za současných okolností, ale zpříjemnilo by to práci a zpřehlednilo kód.

V BasePresenter.php mám několik metod, na které odkazuji např. v handlerech jednotlivých presenterů, či po odeslání formuláře. A v těchto metodách dochází k přesměrování, ne však vždy na stejnou action. Zatím to řeším tak, že do metod posílám jako parametr ->lazyLink(...), který pak vkládám pomocí metod ->getDestination() a ->getParams().

Zlepšení by mohlo být takové, že ->redirect(...) by jako první, či druhý parametr (podle hodnoty $code) přijímal právě instanci třídy Link. Pomocí parametru $args by mohl být v ->redirect(...) rozšířen o přidané parametry.

David Grudl
Nette Core | 8144
+
0
-

Mělo by fungovat $this->redirectUri($link).

Petr Motejlek
Člen | 293
+
0
-

LastHunter napsal(a):

Lopo napsal(a):

bolo by mozne nastavit redirect() tak, aby v pripade volania bez parametrov redirectol na default routu ?
dost ma otravuje ze dost casto to musim pisat do redirectu …
ale hlavny problem nastane az sa rozhodne ze default stranka bude uplne iny presenter:view, ked to vsetko budem musiet dohladavat a prepisovat

Tak si na to udělej konstantu v BasePresenteru :)

abstract class BasePresenter extends Presenter {

  const DEFAULT_ROUTE = 'Default:';

  ...
$this->redirect(self::DEFAULT_ROUTE);

Jestli nechceš moc psát, tak si v BasePresenteru překryj redirect() a když nedostaneš žádný parametr, tak udělej redirect na výchozí presenter – sice teď budeš přepisovat ten výchozí na dvou místech (v bootstrapu a v BasePresenteru), ale už to nemusíš řešit nikde jinde.

Uprímě, já si redirect() překrývám, ale kvůli tomu že naopak chci při žádných parametrech vlastně udělat refresh() (i když ten neexistuje), tj. použít stejný presenter i view(), kde zrovna jsem, ale vyčistit nepotřebné POSTy a GETy ;).

Nilp
Člen | 65
+
0
-

m0t3jl napsal(a):

Uprímě, já si redirect() překrývám, ale kvůli tomu že naopak chci při žádných parametrech vlastně udělat refresh() (i když ten neexistuje), tj. použít stejný presenter i view(), kde zrovna jsem, ale vyčistit nepotřebné POSTy a GETy ;).

A co $this->redirect('this')?

Petr Motejlek
Člen | 293
+
0
-

Nilp napsal(a):

m0t3jl napsal(a):

Uprímě, já si redirect() překrývám, ale kvůli tomu že naopak chci při žádných parametrech vlastně udělat refresh() (i když ten neexistuje), tj. použít stejný presenter i view(), kde zrovna jsem, ale vyčistit nepotřebné POSTy a GETy ;).

A co $this->redirect('this')?

No jasně, na to se mi mapuje ten $this->redirect() ;). Když psát málo, tak vážně psát málo ;)