Router – první lomítko v parametru
- Jiří Nápravník
- Člen | 710
Jde mit v prvním parametru uri včetně prvního lomítka?
pokouším se napsat výraz v routeru takto:
<articleUrl /[a-z\-]+/[0-9]*-[a-z\-]*>
ale adresa se nematchne, musím jedině takto s lomítkem před výrazem:
/<articleUrl [a-z\-]+/[0-9]*-[a-z\-]*>
adresa kterou chci matchnout
/kategorie/(id)-slug
- Jiří Nápravník
- Člen | 710
To opravdu nijak nejde? Resp. jde přes filtry, ale věřím tomu, že ot jde jistě nějak lépe a mám někde chybu…
- Jiří Nápravník
- Člen | 710
Zkusil jsem přepsat, ale výsledek pořád stejný…
Zkusil jsem si dát dump na místa kde se matchuje v routeru. Regexp jsem
osekal na úplně základní: .* . Adresa je vždy sejná:
/ekonomika/5-test/
a když udělám tenhle regexp:
$frontList[] = new Route('<articleUrl>', [
'presenter' => 'Article',
'action' => 'show',
'articleUrl' => [
Route::PATTERN => '.*',
]
]);
tak do porovnání jde:
path: „ekonomika/5-test5/“ (18)
regexp: „#(?P<articleUrl>(?U).*)/?\z#Aiu“ (31)
to se matchne, ale logicky mám to bez té úvodní pomlčky – protože path tam jde bez ní
když nechám
$frontList[] = new Route('/<articleUrl>', [
'presenter' => 'Article',
'action' => 'show',
'articleUrl' => [
Route::PATTERN => '.*',
]
]);
tak do porovnání jde:
path: „/ekonomika/5-test5/“ (19)
regexp: „#(?P<articleUrl>(?U).*)/?\z#Aiu“ (31)
matchne ale zase logicky bez toho úvodního lomítka
přijde mi to, ež to nejde napsat tak abych tam to lomítko na začátku dostal
- Jan Tvrdík
- Nette guru | 2595
TLDR, ale ty tím lomítkem zcela měníš způsob zpracování, viz https://doc.nette.org/…tion/routing#…
- Jiří Nápravník
- Člen | 710
Takže pokud to dobře chápu, tak to nejde, protože nette router, podle toho rozpoznává, jak generovat url.
Takže buď si napsat filtr, anebo ukládat ten slug do databáze, bez úvodního lomítka. Asi bude čistší bez úvodního lomítka a Router aby mi generoval absolutní cestu (bez domény)