Ako napísať routu s použitím transformací
- iGavrilo
- Člen | 32
Zdravím,
snažím sa prepísať moju routu do krajšieho tvaru s použitím https://doc.nette.org/…tion/routing#… a však nejako mi to vôbec nefunguje.
Toto je moja routa ak by ma niekto mohol nakopnúť správny smerom bol by som mu vďačný.
<?php
namespace App;
use Nette;
use Nette\Application\Routers\RouteList;
use Nette\Application\Routers\Route;
class RouterFactory {
/**
* @return Nette\Application\IRouter
*/
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');
/*Profil*/
$fRouter[] = new Route('profil/nastavenia/<id>', 'Profile:edit');
$fRouter[] = new Route('profil/<name>', 'Profile:default');
/*Forum*/
$fRouter[] = new Route('forum/<slug>', 'Forum:topic');
$fRouter[] = new Route('forum/detail/<slug>', 'Forum:detail');
/*Partners*/
$fRouter[] = new Route('partnery', 'Partners:default');
/*Servers*/
$fRouter[] = new Route('servery', 'Servers:default');
/*Login*/
$fRouter[] = new Route('prihlasenie', 'Login:default');
/*Registration*/
$fRouter[] = new Route('registracia', 'Registration:default');
/*News*/
$fRouter[] = new Route('novinky/<id>', 'News:default');
$fRouter[] = new Route('novinky/archiv', 'News:archive');
/*Modul*/
$fRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;
}
}
Editoval iGavrilo (21. 3. 2016 18:53)
- Attanon
- Člen | 25
@iGavrilo myslíš takhle?
Místo tohohle
/*Partners*/
$fRouter[] = new Route('partnery', 'Partners:default');
/*Servers*/
$fRouter[] = new Route('servery', 'Servers:default');
/*Login*/
$fRouter[] = new Route('prihlasenie', 'Login:default');
/*Registration*/
$fRouter[] = new Route('registracia', 'Registration:default');
/*Modul*/
$fRouter[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
tam šoupnout tohle
$route = new Route('<presenter>/<action>[/<id>]', array(
'presenter' => array(
Route::VALUE => 'Homepage',
Route::FILTER_TABLE => array(
// řetězec v URL => presenter
'partnery' => 'Partners',
'servery' => 'Servers',
'prihlasenie' => 'Login',
'registracia' => 'Registration',
),
),
'action' => 'default',
'id' => NULL,
));
- iGavrilo
- Člen | 32
@Attanon
nefunguje
<?php
namespace App;
use Nette;
use Nette\Application\Routers\RouteList;
use Nette\Application\Routers\Route;
class RouterFactory {
/**
* @return Nette\Application\IRouter
*/
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');
$fRoute = new Route('<presenter>/<action>[/<id>]', array(
'presenter' => array(
Route::VALUE => 'Homepage',
Route::FILTER_TABLE => array(
// řetězec v URL => presenter
'partnery' => 'Partners',
'servery' => 'Servers',
'prihlasenie' => 'Login',
'registracia' => 'Registration',
),
),
'action' => 'default',
'id' => NULL,
));
return $router;
}
}
Editoval iGavrilo (24. 3. 2016 21:39)
- Oli
- Člen | 1215
Chlape, chlape, ty snad ani poradit nechces ;)
Neco nejde znamena, ze se to nejak chova a nejak se to ma chovat. Jak se to ma chovat? Co mas v neonu pod presenter mapping? Jakej namespace ma tvuj HomepagePresenter? A v neposledni rade je hezke, ze jsi psal, ze to hazi chybu. Myslis, ale ze pozname co ta chyba rika z toho co jsi napsal? :)
Btw. jakou mas adresarovou strukturu?
S temahle informacema by se uz dalo neco delat.
- Attanon
- Člen | 25
@iGavrilo Ani homepage ti fungovat nemůže, protože tam máš
špatně název proměnné. Ten front router list máš jako
$fRouter
a tu routu potom deklaruješ do proměnné
$fRoute
.
Hlavně já ti psal za co to máš nahradit. A ty jsi to nahradil za celé, což s tím co jsem ti já napsal nelze.
Já to myslel takhle nahradit. A napsal jsem ti jen tenhle kopanec. Ale když na to tak koukám, tak bych to radši ani už nezkracoval, protože bys pak pravděpodobně nedocílil toho, že ti budou fungovat povinné parametry například u toho profilu.
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');
/*Profil*/
$fRouter[] = new Route('profil/nastavenia/<id>', 'Profile:edit');
$fRouter[] = new Route('profil/<name>', 'Profile:default');
/*Forum*/
$fRouter[] = new Route('forum/<slug>', 'Forum:topic');
$fRouter[] = new Route('forum/detail/<slug>', 'Forum:detail');
/*News*/
$fRouter[] = new Route('novinky/<id>', 'News:default');
$fRouter[] = new Route('novinky/archiv', 'News:archive');
$fRouter[] = new Route('<presenter>/<action>[/<id>]', array(
'presenter' => array(
Route::VALUE => 'Homepage',
Route::FILTER_TABLE => array(
// řetězec v URL => presenter
'partnery' => 'Partners',
'servery' => 'Servers',
'prihlasenie' => 'Login',
'registracia' => 'Registration',
),
),
'action' => 'default',
'id' => NULL,
));
return $router;
}