Routa pro převod ze starého url na nové dle statické tabulky
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Domki
- Člen | 310
Dá se nějak pomocí routeru přesměrovat url:
domena.cz/zbozi-kat/zbozikat?kat=3
na akci ‚Categories:default, id=5‘
S tím že 3ka by se změnila na pětku pomocí pevně napsaného pole
Zkoušel jsem to nějak takto ale to se chová uplně divně.
$router[] = new Route('zbozi-kat/zbozikat ? kat=<id>', [
'id' => [
Route::FILTER_IN => function ($id) {
$array =[3 => 5];
return $array[$id] //v $id by mela byt 3(hodnota z puvodního url z parametru 'kat'
//vratit by to melo 5 dle pole
}
],
'presenter' => 'Categories',
'action' => 'default',
Route::ONE_WAY
]);
Díky za pomoc
- David Matějka
- Moderator | 6445
pomoci rout nemuzes zmenit nazev get parametru. mrkni na globalni filtry, kde dostanes pole vsech parametru a muzes to transformovat dle libosti
- David Matějka
- Moderator | 6445
filter_in se pouziva pro preklad URL pozadavku na aplikacni request –
takze v tomto pripade.
filter_out kdyz se vytvari URL
- Domki
- Člen | 310
Kdyz to mám takto:
$router[] = new Route('zbozi-kat/zbozikat ? kat=<id>', [
NULL => [
Route::FILTER_IN => function(array $params) {
return $params;
},
Route::FILTER_OUT => function(array $params) {
Debugger::barDump($params);
$transformArray = [
3 => 5,
];
Debugger::barDump(intval($params['id']));
$params['id'] = $transformArray[intval($params['id'])];
return $params;
},
],
'presenter' => 'Categories',
'action' => 'default',
Route::ONE_WAY
]);
Tak mi debuger vypise:
array (5)
filter ⇒ array (7)
action ⇒ „default“ (7)
id ⇒ „1“
presenter ⇒ „Categories“ (10)
________________________________
1
Nějak se to změní id na 1 a skonci na chybe nedefinovany index 1
- David Matějka
- Moderator | 6445
$router[] = new Route('zbozi-kat/zbozikat', [
NULL => [
Route::FILTER_IN => function(array $params) {
$transformArray = [
3 => 5,
];
if (!isset($params['kat']) || !isset($transformArray[$params['kat']])) {
return NULL;
}
$params['id'] = $transformArray[$params['kat']];
unset($params['kat']);
return $params;
},
],
'presenter' => 'Categories',
'action' => 'default',
Route::ONE_WAY
]);