Router – první lomítko v parametru

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

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

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…

Jan Tvrdík
Nette guru | 2595
+
0
-

Zkus to přepsat na komplexní notaci, těmhle zkratkám nevěřím =)

Jiří Nápravník
Člen | 710
+
0
-

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

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

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)