Jak je mozne ze dojde k matchi na route v tomto pripade?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
washo
Člen | 88
+
0
-
  1. Je mozne ze se url upravi jeste predtim nez se matchuje s vyrazem v masce routy? Myslel jsem ze ne. Ale jak je potom mozne ze mi vyleze toho?

http://eshow.cz/washo/match.jpg

Chci aby doslo az na SimpleRouter. Protoze takle zareaguje aplikace tak, ze presmeruje pozadavek na / misto aby zavolala presenter Realizace a view default.

  1. Jeste by me zajimalo jaky je rozdil mezi view a action protoze do rout pisu 'view'=>... podle dokumentace a pak se stejne default values prepisou na action (dle routeDebugeru).

EDIT: Aha… add 2 uz jsem zjistil dle https://forum.nette.org/…iewtopic.php?…
ale s 1. si nevim rady uz 3 hodiny.

Editoval washo (9. 2. 2009 19:22)

ViliamKopecky
Nette hipster | 230
+
0
-

Zkus nechat 'lang' => NULL (jakožto povinný)

Editoval enoice (9. 2. 2009 19:42)

washo
Člen | 88
+
0
-

enoice napsal(a):

Zkus nechat 'lang' => NULL (jakožto povinný)

Nic. stejne to nepropadne na ten SimpleRouter.
Proste kdyz tam je url / (nic) a nebo /?.* tak to neprojde na simple router ale kdyz tam je /[^?]+?.* tak to propadne.
Divim se ze to nevyzaduje v url alespon to .html

EDIT: Jo ale kdyz jsem tam dal

$router[] = new Route('<lang [a-z]{2}>/<pageName>.html',array(
	'presenter' => 'Page',
	'action' => 'getPage',
	'pageName' => 'index',
//	'lang' => 'cz'
));

jako ze dal uplne pryc ten default lang tak to slape. Melo by fungovat i 'lang' => NULL ?

kazdopadne chtel bych aby default byl cz ze… jde to nejak udelat? A stejne nechapu jak to muze matchnout kdyz v tom url nikde neni .html

Editoval washo (9. 2. 2009 20:55)

ViliamKopecky
Nette hipster | 230
+
0
-

to .html to nevyžaduje když je ten parametr předtím (pageName) nepovinnej. Zkus ještě natvrdo přidat před lang-<lang [a-z]{2}>/<pageName>.html :)

Ono v praxi by ti to mělo redirectovat na právě tenhle formát.

washo
Člen | 88
+
0
-

enoice napsal(a):

to .html to nevyžaduje když je ten parametr předtím (pageName) nepovinnej. Zkus ještě natvrdo přidat před lang-<lang [a-z]{2}>/<pageName>.html :)

Ono v praxi by ti to mělo redirectovat na právě tenhle formát.

Jj.. to funguje. Aha! takze to neni obyc match ze tam musi byt i ty lomitka a tak jo? ono si to samo odstranuje ty lomitka nejak inteligentne podle toho jestli jsou ty parametry povinny nebo nepovinny… hmm ja jsem chtel at to vyzaduje presne tu formu nebo at to propadne na simpleRouter. Takze do default nedam nic krome presenteru a action. Jo tak takhle by to taky slo. Pak me to automaticky presmeruje na
/cz/index.html. coz neni uplne idealni ale s tim uz si pohraju. Hlavne ze uz vim jak to funguje. Lomitka jsou proste magic v tomto pripade.

Diky

ViliamKopecky
Nette hipster | 230
+
0
-

možná by tam ještě fungovalo ONE_WAY… ale Nette ti prostě samo najde odpovídající routu, a pokud to neni ta nejkonkrétnější (nejvíce nahoře), tak to na ní přesměruje.

washo
Člen | 88
+
0
-

enoice napsal(a):

možná by tam ještě fungovalo ONE_WAY… ale Nette ti prostě samo najde odpovídající routu, a pokud to neni ta nejkonkrétnější (nejvíce nahoře), tak to na ní přesměruje.

Ty flagy jsem zkousel. Nicemu to nepomohlo. Spatne jsem chapal to, jak funguje ten match proste. Ty defaulty jsem tam mel jenom aby to vyhodilo cz/index.html .
Ted jsem si rekl ze to bych mohl zaridit routou

$router[] = new Route('',array(
	'presenter' => 'Page',
	'action' => 'getPage',
	'pageName' => 'index',
	'lang' => 'cz'
));

ale ta mrcha mi zas sezere ty veci co by meli jit na SimpleRouter… nevite jak napsat routu, ktera bude reagovat jenom na prazdnou url?

David Grudl
Nette Core | 8218
+
0
-

enoice napsal(a):

Zkus nechat 'lang' => NULL (jakožto povinný)

'lang' => NULL právě znamená nepovinný. Povinný je, když se prvek z pole odstraní úplně.

David Grudl
Nette Core | 8218
+
0
-

washo napsal(a):

$router[] = new Route('',array(
	'presenter' => 'Page',
	'action' => 'getPage',
	'pageName' => 'index',
	'lang' => 'cz'
));

ale ta mrcha mi zas sezere ty veci co by meli jit na SimpleRouter… nevite jak napsat routu, ktera bude reagovat jenom na prazdnou url?

A proč tam takovou routu dáváš? Vyhoď ji a nech tam rovnout ten SimpleRouter, ne?

ViliamKopecky
Nette hipster | 230
+
0
-

David Grudl napsal(a):

enoice napsal(a):

Zkus nechat 'lang' => NULL (jakožto povinný)

'lang' => NULL právě znamená nepovinný. Povinný je, když se prvek z pole odstraní úplně.

Pravda, vyšel jsem ze cviku :/

washo
Člen | 88
+
0
-

David Grudl napsal(a):

washo napsal(a):

$router[] = new Route('',array(
	'presenter' => 'Page',
	'action' => 'getPage',
	'pageName' => 'index',
	'lang' => 'cz'
));

ale ta mrcha mi zas sezere ty veci co by meli jit na SimpleRouter… nevite jak napsat routu, ktera bude reagovat jenom na prazdnou url?

A proč tam takovou routu dáváš? Vyhoď ji a nech tam rovnout ten SimpleRouter, ne?

Chtel jsem aby byl index na / a ne na /cz/index.html
takhle mi to generuje odkazy na /cz/index.html a z / me to presmerovava taky na /cz/index.html

David Grudl
Nette Core | 8218
+
0
-

A ten SimpleRouter má jaké nastavení?

washo
Člen | 88
+
0
-

David Grudl napsal(a):

A ten SimpleRouter má jaké nastavení?

$router[] = new SimpleRouter(array(
    'presenter' => 'Page',
    'action' => 'getPage',
    'pageName' => 'index',
    'lang' => 'cz'
));

Aby to fungovalo na /

Editoval washo (14. 2. 2009 11:32)