Tvoření linku
- sodae
- Nette Evangelist | 250
Ahoj lidi , mam problém
Když volám ve stejném Modulu třeba Auth:login, normálně
se vytvoří odkaz, přesměruje, apod.
ale když zavolám v jiném modulu :Front:Auth:login tak
vyhodí výjimku že neexistuje routa, poté jsem vyzkoušel
:Front:Auth:prihlasit-se a již to jelo.
routa vypadá takto:
Route::setStyleProperty('action', Route::FILTER_TABLE, array(
'prihlasit-se' => 'login',
'odhlasit-se' => 'logout',
'registrovat-se' => 'registration',
'zmena-udaju' => 'change'
));
// ... dalsi routy
$router[] = new Route('<action prihlasit-se|odhlasit-se|registrovat-se|zmena-udaju>', array(
'module' => 'Front',
'presenter' => 'Auth'
));
// ... dalsi routy
Mám podezření na chybu v nette a nebo je to chyba u mě ?
Edit: bral jsem informace z https://doc.nette.org/…n/presenters a
‚AnotherModule:Presenter:action‘ (odkaz do jiného modulu)
skončilo totálně špatně
Editoval sodae (14. 5. 2009 19:16)
- kravčo
- Člen | 721
Chyba je u teba – Nette ťa na ňu dokonca upozornilo ;). Neexistuje routa pre :Front:Auth:login.
V tvojej route máš vymenovaný zoznam povolených reťazcov na mieste akcie pre prezenter :Front:Auth a login medzi nimi nie je. Ak potrebuješ, aby ti fungovali i anglické ekvivalenty, budeš ich musieť do routy doplniť, alebo vymenovanie vynechať a to čo ním riešiš riešiť inak.
$router[] = new Route('<action prihlasit-se|login|odhlasit-se|logout|registrovat-se|registration|zmena-udaju|change>', array(
'module' => 'Front',
'presenter' => 'Auth',
));
// poprípade
$router[] = new Route('<action>', array(
'module' => 'Front',
'presenter' => 'Auth',
));
Edit: bral jsem informace z https://doc.nette.org/…n/presenters a
‚AnotherModule:Presenter:action‘ (odkaz do jiného modulu)
skončilo totálně špatně
Skončilo to len inak, ako by si očakával. V dokumentácii je nepresnosť, odkaz do iného modulu (rovnocenného s tým aktuálnym) treba písať „absolútne“:
:AnotherModule:MyPresenter:action
- kravčo
- Člen | 721
Routa funguje ako regulárny výraz, ktorý matchuje reťazec URL, takže ten
tvoj zápis proste odkaz na :Front:Auth:login
nematchne. Myslím,
že je to očakávané správanie…
To, že požiadavky na :Front:Auth:prihlasit-se
sa až
po matchnutí interne prevedú na :Front:Auth:action
sa
deje až po routovaní, resp. v jeho poslednej fáze.
- _Martin_
- Generous Backer | 679
sodae napsal(a):
_Martin_: takže mam pravdu ?, je to chyba v nette, jinak jestli ti to jde , tak klidně pošlu kod aplikace na mail
Mě to jede normálně, odkazy :Front:Auth:Login
, routa
<presenter>/<action prihlasit-se|default>/<id>
a
překladový slovník
Route::setStyleProperty('action', Route::FILTER_TABLE, array(
'prihlasit-se' => 'login',
));
A vše chodí, jak má (revize 311).
- _Martin_
- Generous Backer | 679
sodae napsal(a):
_Martin_: jestli sis nevšiml mam tam v routě login a ne prihlasit-se
Kde je v této routě login a ne prihlasit-se?
sodae napsal(a):
routa vypadá takto:
// ... dalsi routy $router[] = new Route('<action prihlasit-se|odhlasit-se|registrovat-se|zmena-udaju>', array( 'module' => 'Front', 'presenter' => 'Auth' )); // ... dalsi routy
Vážně ti teď nerozumím.