Routování – kategorie a parametry

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

Zdravím Nette komunitu :-)

Jsem začátečník co se týče Nette, ale snad se do toho pomalu již dostávám :-) O co bych vás ale chtěl poprosit, je popsání vytvoření routování a implementace pressenterů pro následující situaci. (Omlouvám se, ale i když jsou tutoriály dobře napsané, tohle mi hlava asi moc nebere)

Mám web, kde mám sekce Úvod, nabídka atd…

Když zadám adresu:
doména/nabidka Chci, aby se zobrazila stránka, kde bude třeba pár slov o nabídce
doména/nabidka/fotbal Chci aby se zobrazila stránka kde bude něco o fotbale
(to samé třeba i pro hokej, tenis)
doména/nabídka/detail/1210 – aby se vypsaly informace třeba o výrobku s ID = 1210 v databázi

Jaké tedy musím mít udělané routy v bootstrapu a jak mají vypadat presentery?
Chápu dobře, že musím mít presenter Nabidka, který bude obsahovat funkce:
actionDetail, actionFotbal,actionTenis,…
To je ještě v pořádku, to funguje, ale potřeboval bych poradit, jak zajistit abych když zadám:

doména/nabidka/blbost – aby jsem se třeba přesměroval na Nabidka:chyba
domena/nabidka/detail/1210/blbost/dalsiBlbost – aby se to také přesměrovalo třeba na Nabidka:chyba.

Tohle se mi nedaří. Když zadám „správnou“ adresu, je to OK, ale když zadám některou z blbostí o dva řádky výše, hodí mi laděnka chybu, že třeba neexistuje šablona blbost, nebo že …/nabidka/detail/1210/blbost/dalsiBlbost zase vypíše že to je neplatný HTTP request.

Prosím o radu, jak a kde naprogramovat, co z routy brát a co ne. Aby to tak bylo ošetřený proti podobným špatným url. Díky moc a omlouvám se za složitý popis :(

$router[] = new Route('index.php', array(
	'presenter' => 'Uvod',
	'action' => 'default',
), Route::ONE_WAY);

$router[] = new Route('nabidka/<action>/<id>', array(
	'presenter' => 'Nabidka',
	'action' => 'seznamSportu',
	'id' => NULL,
));

$router[] = new Route('nabidka/fotbal/<id>', array(
	'presenter' => 'Nabidka',
	'action' => 'fotbal',
	'id' => NULL,
));

$router[] = new Route('<presenter>/<action>/<id>', array(
	'presenter' => 'Uvod',
	'action' => 'default',
	'id' => NULL,
));

--\

Editoval Bohosu (23. 4. 2010 19:00)