Jde brát <action> pouze z FILTER_TABLE, jinak vynechat?

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

Zdravím,

mám následující routu, která se ještě rozroste:

$router[] = new Route('<presenter>[/<action>][/<id [a-z]{1}[0-9a-z]*>][/<page [0-9]*>]', array(
                          'module' => 'Front',
                          'presenter' => array(
                              Route::VALUE => 'Homepage',
                              Route::FILTER_TABLE => array(
                                  'clanky' => 'Articles',
                              ),
                          ),
                          'action' => array(
                              Route::VALUE => 'default',
                              Route::FILTER_STRICT => true,
                              Route::FILTER_TABLE => array(
                                  'pridat' => 'add',
                              ),
                          ),
    ));

Položka <action> je nepovinná a měla by mít jen hodnoty, které jsou ve FILTER_TABLE, jinak by se měla vynechat. Dá se to nějak vynutit?

O jednom způsobu vím [/<action pridat|...>], ale to bych to musel psát na dvě místa. Díky za rady.

Editoval radekBrno (28. 6. 2014 13:58)

Jan Endel
Člen | 1016
+
0
-

Když máš STRICT ⇒ TRUE tak se ti vemou pouze a jenom action z FILTER_TABLE ostatní se přeskočí.

radekBrno
Člen | 61
+
0
-

Při použití Route::FILTER_STRICT => true se vezmou action z FILTER_TABLE, ale v ostatních případech dojde k chybě „No route for HTTP request“.

Jan Endel
Člen | 1016
+
0
-

Je třeba samozřejmě pod tuto routu doplnit nějakou, co matchne ten zbytek tak jak ty potřebuješ.