Route::setStyleProperty nestaticky (pro každou routu zvlášť)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Honza Marek
Člen | 1664
+
0
-

Často potřebuju nahrazovat v routách „url“ za idčka. Pokud budu předpokládat, že id použije i více presenterů než jeden, musím si nyní psát vlastní routy. Ještě samozřejmě můžu použít $articleId, $categoryId, … atd. Ale proč? Elegantním řešením by bylo, kdyby styleProperty nebylo takhle nesmyslně statické, ale instanční pro každou routu.

Vyki
Člen | 388
+
0
-

Něco ve stylu

<?php
$router[] = new Route('<id #perm>', array(
        'presenter' => 'Page:Default',
        'action' => 'default',
));

$router[] = new Route('<id #articleid>', array(
        'presenter' => 'Articles:Default',
        'action' => 'detail',
));
?>

mi funguje a nevadí, že u obou jsou parametry s názvem id.

Edit: Ještě dodám, že problém však nastává když se jednomu z nich nastaví defaultní hodnota pro id.

Editoval Vyki (28. 11. 2010 23:07)

Filip Procházka
Moderator | 4668
+
0
-

a co takhle? :)

$router[] = new Route('<id>', array(
        'presenter' => 'Articles:Default',
        'action' => 'detail',
	'id' => array(
		Route::VALUE => NULL,
		'fixity' => Route::OPTIONAL, // nebo Route::CONSTANT
		// Route::PATTERN => '[^/]+',
		// Route::FILTER_TABLE => array(),
		// Route::FILTER_IN => array(...),
		// Route::FILTER_OUT => array(...),
		// ...
	)
));

Editoval HosipLan (29. 11. 2010 7:54)

David Grudl
Nette Core | 8218
+
0
-

Route::setStyleProperty se v podstatě deprecated, použij HosipLanův zápis.

Ondřej Mirtes
Člen | 1536
+
0
-

Co je to ta fixity? :)

David Grudl
Nette Core | 8218
+
0
-

fixity je interní záležitost, která se nesmí nastavovat, jinak to může produkovat nečekané výsledky.

Ondřej Mirtes
Člen | 1536
+
0
-

Já si právě říkám, že to bude nějaký implementační detail. Takže v tom poli budu nastavovat pouze FILTER_IN a FILTER_OUT a o zbytek se starat nebudu.