Routa – Skrýt presenter v URL
- Danny
- Člen | 146
Zdravím,
chtěl bych se zeptat jak je možné skrýt presenter v URL adrese.
Mám PagesPresenter.php
public function renderPage($url)
{
// ..
$this->template->render('cesta'.$url.'latte');
}
který vypisuje šablony podle action($url), jedná se jenom o statické šablony které se berou lokálně, takže ve výsledku url vypadá takto:
.cz/pages/informace
.cz/pages/kroky
Potřeboval bych nějak skrýt název toho presenteru (pages) v URL adrese, pomocí route.
Aby cokoliv v pages vypadalo takto
.cz/informace
.cz/kroky
Věděl by někdo jak na to?
Díky moc :)
- Danny
- Člen | 146
No já myslím úplně to základní logiku která je v routě, tu mi to rozbije, nebo ne?
V tom url parametru bude vždycky název šablony na základě kterého se to pak includne, jde jenom o statický stránky.
Mám tam toto:
public static function createRouter()
{
$router = new Routers\RouteList;
$cRouter = new Routers\RouteList('Frontend');
// $cRouter [] = new Routers\Route('<url>', 'Pages:page');
$cRouter [] = new Routers\Route('<presenter>/<action>[/<id>]', 'Homepage:default');
$router[] = $cRouter ;
return $router;
}
Editoval Danny (14. 9. 2017 21:26)
- Danny
- Člen | 146
No pokud se chci dostat na jiný presenter
např.
order:default
Tak nefunguje tak jak má, resp mě směruje na Pages:page
Viz obrázek
https://gyazo.com/…f5455b68b660
Editoval Danny (15. 9. 2017 8:18)
- Martk
- Člen | 661
Tohle by mělo jít:
$router = new RouteList;
$pages = ['informace', 'kroky'];
$router[] = new Route('<page>', [
'presenter' => 'Homepage',
'action' => 'page',
'page' => [
Route::FILTER_IN => function ($page) use ($pages) {
if (in_array($page, $pages)) {
return $page;
}
return null;
}
],
]);
$router[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');