Různý zápis rout v Nette 2.0 v PHP
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- nanuqcz
- Člen | 822
Ahoj, z Nette 1.0 jsem byl zvyklý na tento zápis rout:
$router[] = new NRoute('admin/<presenter>/<action>[/<id>]', array(
'module' => 'Admin',
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
$router[] = new NRoute('<presenter>/<action>[/<id>]', array(
'presenter' => 'Homepage',
'action' => 'default',
'id' => NULL,
));
Ve verzi 2.0 je ale možnost zapsat druhý parametr jako string, takže předpokládám, že nějak takhle:
$router[] = new NRoute('admin/<presenter>/<action>[/<id>]', 'Admin:Homepage:default');
$router[] = new NRoute('<presenter>/<action>[/<id>]', 'Homepage:default');
Když ale zápis v bootstrap.php přepíšu na tento druhý způsob, routy se začnou chovat divně a úplně jinak, než při prvním zápise.
Konkrétně se chovají takhle (možná je to bug, ale to si netroufám tvrdit):
- Pokud vypadá URL následovně:
http://www.mojeadresa.cz/
, přesměruje se na URLhttp://www.mojeadresa.cz/admin/homepage/
, ale přitom se načteHomePresenter->renderDefault()
(tzn kAdmin_HomePresenter->renderDefault()
se vůbec nedostanu)
Používám prefixovanou verzi Nette 2.0 Alpha 2 na PHP 5.3. Díky :-)
- David Grudl
- Nette Core | 8218
Ten přepis není přesný, protože
$router[] = new NRoute('admin/<presenter>/<action>[/<id>]', array(
'module' => 'Admin',
...
určuje, že routa platí jen pro modul Admin, zatímco
$router[] = new NRoute('admin/<presenter>/<action>[/<id>]', 'Admin:Homepage:default');
už nikoliv.