Kombinace statických a dynamických stránek

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

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
+
0
-

nejjednodussi bude pridat FILTER_IN pro slug, ktery vrati null, pokud slug nenajde v databazi

Xantes
Člen | 28
+
0
-

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.

corri
Člen | 1
+
0
-

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
+
0
-

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
    }
  ),
));