Pomoc s routováním ve tvaru : lorem.cz/nazev-vlastni-stranky-z-databaze
- docky
- Člen | 59
Zdravím,
potřeboval bych pomoct s routovaním, mám tohle :
<?php
public static function createRouter() {
$router = new RouteList();
$router[] = $aRouter = new RouteList('Admin');
$aRouter[] = new Route('admin/<presenter>/<action>[/<id>]', 'Homepage:default');
$router[] = $fRouter = new RouteList('Front');
$fRouter[] = new Route('s[/<name>]', array(
'presenter' => 'Pages',
'action' => 'page',
'name' => array(
Route::FILTER_IN => function($url) {
return \Nette\Utils\Strings::webalize($url);
},
Route::FILTER_OUT => function($url) {
return \Nette\Utils\Strings::webalize($url);
}
)
));
$fRouter[] = new Route('<presenter>/<action>[/<id [0-9]+>]', 'Homepage:default');
return $router;
}
?>
Mám v administraci zakládání vlastních stránek, a potřeboval bych,
aby se vlastní stránka zobrazila například takhle :
lorem.cz/nazev-vlastni-stranky-z-databaze
Zatím jsem to udělal takhle :
lorem.cz/s/nazev-vlastni-stranky-z-databaze, jenže to mi
nepříjde moc pěkné. Doufám že to nějak půjde. Děkuji za pomoc
- Šaman
- Člen | 2666
Zkus, jestli ti něco neporadí tady. Sice starši přednáška, ale
routovánim z databáze se zabývá.
https://vimeo.com/…sob/35978077
A jestli ti jde jen o to zrušit ono /s
, tak by mělo stačit
jej smazat v definici routy a nechat jen parametr name
, ne?
Editoval Šaman (6. 12. 2015 17:05)
- Šaman
- Člen | 2666
docky napsal(a):
to jsem zkousel, jenže pak nejdou klasicky presentery
No, musíš si sám nejprve nějak rozlišit, co půjde za touhle routou a co
za presentery.
lorem.cz/pokus
– má to být článek pokus
z databáze, nebo Pokus:default
?
Myslím, že nebudeš moci mít definovanou defaultní routu. když stanovíš
pravidlo, že jeden parametr => tenhle router a dva [až tři] parametry
jdou za <presenter>/<action>[/<id>]
, tak by to
mělo fungovat. Případně si pohraj s pořadím rout. Ale připadá mi, že
takto definované by měly být nezávislé, ale možná si zkus tu s více
parametry (a žádnou defaultní routou, takže se nebude zkracovat!) dát před
tu tvoji.
- docky
- Člen | 59
<?php
public static function createRouter() {
$router = new RouteList();
$router[] = $aRouter = new RouteList('Admin');
$aRouter[] = new Route('admin/<presenter>/<action>[/<id>]', 'Homepage:default');
$router[] = $fRouter = new RouteList('Front');
$fRouter[] = new Route('<name>', array(
'presenter' => 'Pages',
'action' => 'page',
'name' => array(
Route::FILTER_IN => function($url) {
return \Nette\Utils\Strings::webalize($url);
},
Route::FILTER_OUT => function($url) {
return \Nette\Utils\Strings::webalize($url);
}
)
));
$fRouter[] = new Route('<presenter>/<action>[/<id [0-9]+>]', 'Homepage:default');
return $router;
}
?>
už mi to jde, díky :) zmenil jsem s[/<name>] na <name>