Application::Route a parametry komponenty
- LM
- Člen | 206
Hodilo by se kdyby bylo možné v routě přenášet i parametry komponent,
teď se parametry komponenty přenášejí jako
nazevkomponenty-parametr
, bohužel takový název nelze použít
v routě (omezení PCRE):
new Route('neco/<nazevkomponenty-parametr>', array(
'nazevkomponenty-parametr' => …,
); // exception: Parameter name must be alphanumeric string due to limitations of PCRE, 'nazevkomponenty-parametr' is invalid.
Tohle funguje, ale pěkná URL je pryč.
new Route('neco ? param=<nazevkomponenty-parametr>', array(
'nazevkomponenty-parametr' => …,
);
Řešili jste to někdo? lze to nějak obejít?
- David Grudl
- Nette Core | 8218
To ověření není samoúčelné, jak je uvedeno ve zprávě výjimky, jde
skutečně o omezení PCRE,
které nedovoluje mít v názvu parametru regulárního výrazu jiný znak než
[0-9a-zA-Z_]
+ nějaké další mimo ASCII rozsah.
Ale nějakým nečistým trikem by to obejít šlo…
- LM
- Člen | 206
nefunguje, neprojde mi test, výsledek:
/any:
Warning: preg_match() [function.preg-match]: Compilation failed: syntax error in subpattern name (missing terminator) at offset 8 in /var/www/libs/Nette/Application/Route.php on line 154
no match
parsed: ***ERROR***
PHP 5.2.6, linux, PCRE: 7.6 2008–01–28
- LM
- Člen | 206
Ještě taková malý chybka pokud nastavím defaultní hodnotu parametru:
$route = new Route('<para-meter>', array(
'presenter' => 'Presenter',
'para-meter' => 'meter',
));
Háže to pak notice:
Notice: Undefined index: default in /var/www/libs/Nette/Application/Route.php on line 177
Chyba je v http://code.google.com/…on/Route.php#450, kdy se již pracuje s para___meter namísto para-meter : )