Jiny presenter pri nesplneni aspon jedne podminky

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

Zdravim,
mam routu napr. viz nize, ktera spousti presenter kategorie. Problem je, ze bych potreboval odkazat na presenter kategorie pouze, pokud je splnena alespon jedna z nepovinnych podminek. Pokud nebude zadna, poslat na Homepage presenter. Jak to udelat?

$router[] = new Route('[/kategorie/<catId>][/dalsiKriterium/<kritId>][/necoDalsiho/<dalsiId>]', array(
	'module' => 'Front',
	'presenter' => 'Category',
	'action' => 'default',
	...
));

Diky.

Šaman
Člen | 2659
+
0
-

Zkontrolovat v CategoryPresenter v metodě startup() a při nesplnění podmínek přesměrovat na Homepage.
Tahle logika nesouvisí s routováním, přijde mi to spíš podobné tomu, že do zabezpečené sekce nepustíme nepřihlášeného.

tomaskrejci
Člen | 25
+
0
-

Asi jsem to spatne vysvetlil. Dam konkretnejsi priklad. Tyto URL potrebuji smerovat na presenter Category:

/kategorie/srouby/
/kategorie/srouby/material/zinek/
/material/zinek/

Jednotliva kriteria se mohou vzajemne kombinovat, ale zadne z nich neni povinne. Tedy, alespon jedno ano, jinak se spusti homepage presenter. Nejde mi o presmerovani ale o spusteni spravneho presenteru.

Diky

David Matějka
Moderator | 6445
+
0
-

a nestacilo by proste pred tuhle routu pridat / routu pro homepage?

jinak bys taky mohl pouzit filtry:

$router[] = new Route('[/kategorie/<catId>][/dalsiKriterium/<kritId>][/necoDalsiho/<dalsiId>]', array(
    'module' => 'Front',
    'presenter' => 'Category',
    'action' => 'default',
    NULL => array(
          Route::FILTER_IN => function($params) {
               if(!isset($params['kritId']) && !isset.....) {
                     return null;
               }
               return $params;
          }
    )
    ...
));