Unexpected ‚[‘ in mask ‚login[?return=<returnUrl>]‘

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
keff
Člen | 12
+
0
-

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
+
0
-

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
+
0
-
$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
+
0
-

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
+
0
-

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>]&parametr2=<neco2>).

Tak díky!