Unexpected ‚[‘ in mask ‚login[?return=<returnUrl>]‘
- keff
- Člen | 12
Ahojte,
zkouším do URL přidat volitelný query parametr, takhle:
<?php
$router[] = new NRoute('login[?return=<returnUrl>]', array(
'presenter' => 'Login',
'action' => 'login',
'returnUrl' => null
));
?>
Cílem je, abych mohl použít {plink Login:login, returnUrl ⇒ $currentPage} i {plink Login:login}
Nette ale zahlásí jen:
InvalidArgumentException: Unexpected ‚[‘ in mask ‚login[?return=<returnUrl>]‘.
v bootstrap.php na řádku s definicí login routy. To nechápu, přijde mi, že jsem routu zadal správně.
Co je nejpodivnější je, že když odstraním [] z definice routy, funguje to tak jak má – tzn. {plink Login:login, returnUrl ⇒ $currentPage} vyrobí url ‚/login?return=…‘ a {plink Login:login} vyrobí ‚/login‘. To je nějaký nedokumentovaný magic s tím, že volitelné části url musím dát do [], ale volitelné query stringy se vynechají samy?
Díky moc!
PHP verze 5.2.11
Nette Framework 2.0-alpha2 pro PHP 5.2
- bojovyletoun
- Člen | 667
Myslím, že je to tak, jak říkáš. Zkusil jsem to – jsou volitelné automaticky. Navíc mi v nich nejde ani omezení patternem.
- Filip Procházka
- Moderator | 4668
$router[] = new NRoute('login?return=<returnUrl>', array(
'presenter' => 'Login',
'action' => 'login',
'returnUrl' => NULL
));
{plink Login:login, 'returnUrl' => $currentPage}
{plink Login:login}
Query parametry jsou trochu více magické, probíhá tam trochu jinak
mapování z masky. Co se týče omezení, doporučoval bych spíš použít
definování Route::PATTER
než to cpát do url.
Editoval HosipLan (7. 3. 2011 21:31)
- bojovyletoun
- Člen | 667
Z jakého důvodu je lepší to psát do $metadat přes PATTERN než přímo
dle vzoru // name=<parameter-name [pattern][#class]>
? Mě
akorát napadá, že tam jde pak jednoduše připsat filter_(in|out|table)..
- keff
- Člen | 12
Máte pravdu, dík – a teď mě navíc napadlo, že v query parameters by ten systém s hranatýma závorkama stejně asi nešel udělat – protože parametry narozdíl od cesty v URL můžou být v libovolném pořadí (a jak se to pak má poprat s url/[cesta?parametr1=<neco1>]¶metr2=<neco2>).
Tak díky!