Nette 2.3 static function createRouter
- motorcb
- Člen | 552
Zdravím,
používal jsem níže uvedený kód pro hezké URL. Nyní v Nette 2.3 musí být static function createRouter a v této funkci nemohu používat $this
public static function createRouter()
{
$router = new RouteList();
$router[] = new Route('/sport/<id [a-z0-9\-]+>', array(
'presenter' => 'Sport',
'action' => 'detail',
'id' => array(
Route::FILTER_IN => $this->cachedDatabaseRouterHelper->filterInSport,
Route::FILTER_OUT => $this->cachedDatabaseRouterHelper->filterOutSport
)
));
}
Jak udělat hezké URL podle titulku z databáze? Jde nějak obejít aby createRouter nemusel být static?
Díky
- motorcb
- Člen | 552
Zdravím,
dělám nový projekt na Nette 2.3 a nevím jak udělat aby router upravíl URL podle záznamu z DB. V sandboxu v souboru RouterFactory.php je:
public static function createRouter() tudíž v této metodě nemohou použít $this ($this->cachedDatabaseRouterHelper->filterInSport)
Když udělám projekt po staru podle Davida:
config.neon:
#router: App\RouterFactory::createRouter#tento radek zakomentuju a nahradim:
router: @App\RouterFactory::createRouter
nyní public function createRouter() nemusí být static a
mohu v ní použít $this
Ovšem dostávám chybu z laděnky:
Nette\DI\ServiceCreationException
Service ‚routing.router‘: Reference to missing service of type
App\RouterFactory.
Tak jak na to?
Editoval motorcb (29. 3. 2015 20:52)
- lukinox
- Člen | 3
Zdravím,
postupoval jsem úplně stejně, jako je v komentářích výše, mám upravený config.neon i RouterFactory.php. Na localhostu mi to funguje, ale nahraju to na server a Nette hlásí chybu Using $this when not in object context. Temp adresář je vymazaný (několikrát). Nevíte někdo, v čem může být problém?
Díky