Přejmenování presenteru a přesměrování na nový
- Oli
- Člen | 1215
Ahoj,
měl bych takový dotaz. Mám adresu web.tld/aaa/123
a chtěl bych
to změnit na web.tld/bbb/123
. S tím, že aaa
a
bbb
jsou názvy presenterů a 123
je slug. Zkoušel
jsem to nějak takhle:
$router[] = new Route('<presenter aaa>[/<slug>]', array(
'module' => 'Frontend',
'presenter' => array(
Route::VALUE => 'Homepage',
Route::FILTER_IN => function ($presenter)
{
$return = $presenter;
if (\Nette\Utils\Strings::lower($presenter) == 'aaa')
{
$return = 'bbb';
}
return $return;
}
),
'action' => 'detail',
'slug' => NULL
), Route::ONE_WAY);
Tohle funguje, ale jen bez slugu. Pokud vlezu na web.tld/aaa
tak
mě to hodí na web.tld/bbb
. Pokud ale vlezu na
web.tld/aaa/123
, tak mě to přesměruje na
web.tld/bbb
. Přesměruje to na jinou routu a ten slug to jakoby
zapomene. Je nějaká možnost jak vynutit předání toho slugu nebo jiny
reseni, aby to fungovalo?
Díky
- petr.pavel
- Člen | 535
S tím přesměrováním ti neporadím. Zkus zakomentovat všechny routy před a po, abys měl jistotu, že skutečně pracuješ jen s touhle. Případně odstraň ONE_WAY, abys viděl, jestli routa vůbec sepne. Předpokládám, že ve skutečnosti nemáš presentery aaa a bbb, ale že se jmenují jinak.
Mimochodem, nebylo by jednodušší použít FILTER_TABLE místo FILTER_IN?
$router[] = new Route('<presenter aaa>[/<slug>]', array(
'module' => 'Frontend',
'presenter' => array(
Route::VALUE => 'Homepage',
Route::FILTER_TABLE => array(
'aaa' => 'Homepage',
'bbb' => 'Homepage',
// The last value is the canonical one (used for link generation)
),
),
'action' => 'detail',
'slug' => NULL
), Route::ONE_WAY);