Spatne zvoleni presenteru routerem
- Elijen
- Člen | 171
Zdravim,
mam nasledujici routy:
$router[] = new Route('[<lang en|ru>/][index.php]', array(
'presenter' => 'Homepage',
'action' => 'default'
));
$router[] = new Route('[<lang en|ru>/]<presenter>/<id>', array(
'action' => 'show'
));
$router[] = new Route('[<lang en|ru>/]<presenter>', array(
'action' => 'search'
));
Pozadavek na http://example.com/en/article
vyhodi
404 a ladenka hlasi, ze nebyl nalezen presenter ‚en‘. To,
ze se hleda presenter ‚en‘, je ocividne spatne.
Problem je zjevne v tom, ze (persistentni) parametr ‚lang‘ je volitelny
a Nette pravdepodobne nedokaze odlisit http://example.com/article/1
od http://example.com/en/article
. Jenze me se ten efekt
automatickeho doplneni jazyka pri vynechani parametru ‚lang‘ libi a nechci
se ho vzdat :)
Chybu resi pridani vypisu vsech povolenych presenteru do routy napr.
<presenter articles|files|users>
. Coz mi zas neprijde uplne
elegantni a prakticke.
Nenapada nekoho z vas lepsi reseni?
Dekuji.
- westrem
- Člen | 398
No napadaju ma 2 mozne riesenia ale nemam cas ich testovat ci naozaj funguju:
1. nastav poli defaults aj defaultny jazyk tzn:
$router[] = new Route('[<lang en|ru>/]<presenter>/<id>', array(
'lang' => 'en',
'action' => 'show'
));
Toto ale neviem ci zafunguje.
2. nastav <presenter>
masku tak aby podporovalo len viac
ako 2 znakove nazvy – tym sa zabezpeci, ze sa ti nebude matchovat lang na
presenter
Pripadne sa skus inspirovat nasledovnym: