Jak je mozne ze dojde k matchi na route v tomto pripade?
- washo
- Člen | 88
- 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.
- Jeste by me zajimalo jaky je rozdil mezi
view
aaction
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
Zkus nechat 'lang' => NULL
(jakožto povinný)
Editoval enoice (9. 2. 2009 19:42)
- washo
- Člen | 88
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
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
enoice napsal(a):
to
.html
to nevyžaduje když je ten parametr předtím (pageName
) nepovinnej. Zkus ještě natvrdo přidat předlang-<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
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
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
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
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
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
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