Parametrizovana routa, usporny URL managment
- srigi
- Nette Blogger | 558
Vo vedlajsom vlakne sa riesi routovanie, tak aby routa nemusela explicitne v maske obsahovat Presenter.
V YII frameworku mame taku skvelu vec – parametrizovane routry. V skratke, umoznuje to spravit takutu vec:
'rules'=>array(
'<_c:(dashboard)>/<action:\w+>/<id:\d+>' => '<_c>/<action>',
'<_c:(dashboard)>/<action:\w+>' => '<_c>/<action>'
'<_c:(dashboard)>' => '<_c>/index'
'<action:\w+>/<id:\d+>' => 'site/<action>',
'<action:\w+>' => 'site/<action>',
'' => 'site/index',
),
URL | request |
/foo | SiteController::actionFoo() |
/foo/5 | SiteController::actionFoo(5) |
/bar | SiteController::actionBar() |
/dashboard | DashboardController::actionIndex() |
/dashboard/foo | DashboardController::actionFoo() |
/dashboard/bar/5 | DashboardController::actionBar(5) |
Cize cokolvek okrem dashboard
co je v REQUERST_URI, sa matchne
ako akcia defaultneho Controllera. Ak sa na tam objavi dashboard
,
bude tento param brani ako nazov Controllera. Je mozne nastavit aj vycet:
'<_c:(dashboard|gallery|users)>/<action:\w+>/<id:\d+>' => '<_c>/<action>',
Pride mi to ako celkom pekny sposob usporneho URL managmentu, pri minime rout. Mame taketo nieco v Nette?
- Patrik Votoček
- Člen | 2221
teoreticky by mohlo fungovat:
$router[] = new Route('[<presenter (dashboard|gallery|users)>]/<action>[/<id>]', 'Homepage:default');
netestoval jsem
- Filip Procházka
- Moderator | 4668
Ekvivalentem by mělo být zhruba toto:
$router[] = new Route('/[<presenter>/]<action>[/<id [0-9]+>]', array(
'presenter' => 'Site',
'action' => 'index',
'id' => NULL,
));
Pokud chceš ještě limitovat presentery, dá se to udělat jak říká
Patrik, <presenter (dashboard|gallery|users)>
, ale to mi
příjde jako (sice efektivnější) ale méně ohebné řešení. Využil bych
spíše Route::FILTER_IN
a Route::FILTER_OUT
. viz https://doc.nette.org/…tion/routing#…
Editoval HosipLan (17. 3. 2011 8:05)