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
+
0
-

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 URL http://www.mojeadresa.cz/admin/homepage/, ale přitom se načte HomePresenter->renderDefault() (tzn k Admin_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
+
0
-

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.