Routování pomocí databáze

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

Ahoj,

předem upozorňuji, že jsem v Nette relativně nový, tak se omlouvám, pokud můj dotaz bude bezpředmětný.

Pokusím se nastínit problém. Rád bych si na Nette postavil vlastní jednoduchý CMS, ale zasekl jsem se u routování.
V db mám tabulku, dejme tomu, ‚pages‘, která obsahuje ‚název_stránky‘, …, a také obsahuje ‚název_presenteru‘, který se bude o tuto stránku starat.
Podstata je taková, že bych chtěl, aby se v adrese nezobrazoval přímo název presenteru (to lze u routy vyřešit filtrem), ale zároveň bych chtěl, aby se, například, pro články a aktuality použil stejný presenter i přesto, že v adrese bude /aktuality/aktualita_o_sleve nebo /clanky/clanek_o_necem a toto filtrem vyřešit nelze (podle mě).

Pokoušel jsem se předělat třídu Route, aby pracovala s databází, to je bez problému. Zjistil jsem si i název stránky (aktuality, články, …) a na základě toho jsem si získal z DB, jaký presenter pro tuto stránku použít, ale jakmile na konci metody match vrátím výsledek:

return new Application\Request(
			$presenter,
			$httpRequest->getMethod(),
			$params,
			$httpRequest->getPost(),
			$httpRequest->getFiles(),
			array(Application\Request::SECURED => $httpRequest->isSecured())
		);

Tak mě to přesměruje na adresu podle názvu presenteru, který jsem našel v DB (například stranka_presenter/clanek_o_necem).

Byl bych vděčný, kdyby mi někdo pomohl s tímto problémem, nebo kdyby mi poradil jiný postup, jak toto řešit.

Díky

llsm
Člen | 121
+
0
-

Nestaci ti pouzit Route::FILTER_TABLE? Udelat si vlastni tridu, ktera se o routu (tj. vsechny routy, ktere jdou pres DB) bude starat a nahrat si do routy vsechny presentery, ktere jsou v databazi?

Snazit se prespsat chovani routeru by podle mne nemelo byt potreba. Jinak doporucuji k routam video z jedne z poslednich sobot.