Regex na přesná slova v routě

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

Zdravím,
zkuším napsat regex na přesná slova v routě.
Mám routu:

$router[] = new Route('nase-piva[/<package [lahvove|sudove|ostatni]+>]', array(
	'presenter' => 'Product',
	'action' => 'default',
	'package' => array(
		Route::FILTER_TABLE => array(
			'lahvove' => 1,
			'sudove' => 2,
			'ostatni' => 3
		),
	)
));

Potřebuju aby se parametr „package“ poslal pouze když obsahuje jedno ze tří výrazů. Zkoušel jsme různé parametry, ale nějak toho nemůžu docílit.

Děkuji

sKopheK
Člen | 207
+
0
-
nase-piva[/<package (lahvove|sudove|ostatni)>]

http://www.php.net/…patterns.php

iwory
Člen | 147
+
0
-

sKopheK napsal(a):

nase-piva[/<package (lahvove|sudove|ostatni)>]

http://www.php.net/…patterns.php

Dekuju Z.

akadlec
Člen | 1326
+
0
-

@iwory: pokud jsem tě dobře pochopil chceš mít v dané routě povoleny jen vypsané hodnoty a nic jiného. V tomto případě tam podle dokumentace stačí přidat Route::FILTER_STRICT ⇒ TRUE

$router[] = new Route('nase-piva[/<package>]', array(
    'presenter' => 'Product',
    'action' => 'default',
    'package' => array(
        Route::FILTER_TABLE => array(
            'lahvove' => 1,
            'sudove' => 2,
            'ostatni' => 3
        ),
	Route::FILTER_STRICT => TRUE
    )
));

ve vygenerované routě budeš mít lahvove/sudove/ostatni a router to pak přeloží na 1/2/3