Kombinace statických a dynamických stránek
- Xantes
- Člen | 28
Ahoj,
chtěl bych mít na webu pár statických stránek, například
example.com/o-nas a zároveň nějaké dynamické například
example.com/aktuality/aktualita.
Mám takové routy ve FrontRouter:
$frontRouter[] = new Route('<slug [a-z0-9_-]+>', 'Pages:view');
$frontRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
Podotýkám, že předem nevím, kolik statických stránek bude, takže je nemůžu vyjmenovat ve slugu například takto:
$frontRouter[] = new Route('<slug o-nas|kontakty>', 'Pages:view');
Problém mám, že například ty aktuality jsou chápány jako statická stránka – první routa je vezme a nedostane se k druhé.
Lze to nějak vyřešit? Díky
- David Matějka
- Moderator | 6445
nejjednodussi bude pridat FILTER_IN pro slug, ktery vrati null, pokud slug nenajde v databazi
- corri
- Člen | 1
Xantes napsal(a):
Super, díky moc!
Zatím jsem si to pro otestování udělal jen tak, že routa ve FILTER_IN otestuje, jestli je slug kontakt, jinak vrátí NULL a to funguje dobře. Myslím, že propojit s databází už to nebude problém.
Ahoj Můžeš sem hodit řešení. Pokouším se o něco podobného.
- Xantes
- Člen | 28
Mám to nějak takhle
$frontRouter[] = new Route('<slug [a-z0-9_-]+>', array(
'presenter' => 'Pages',
'action' => 'view',
'slug' => array(
Route::FILTER_IN => function($slug) use($staticPages) {
// Tady provedu kontrolu, zda slug odpovídá statické stránce
// Pokud ano, vrátím ho. Pokud ne, vrátím NULL
}
),
));