Pořadí volitelných paramterů v routeru

Anton
Člen | 2
+
0
-

Ahoj,

snažím se, aby mi fungovali tyto routy

  • cs/produkt
  • cs/produkt/vse/akce
  • cs/produkt/vse/exclusive
  • cs/produkt/vse/akce/exclusive
  • cs/produkt/vse/domacnost
  • cs/produkt/vse/domacnost/akce
  • cs/produkt/vse/domacnost/exclusive
  • cs/produkt/vse/domacnost/akce/exclusive

V RouteFactory mám tuhle routu.

<?php
$frontRouter[] = new Route('cs/produkt[/<gender>][/<category>][/<event>][/<exclusive>]', [
	'presenter' => 'Products',
	'action' => 'default',
	'lang' => 'cs',
	'gender' => [
		Route::VALUE => NULL,
		Route::FILTER_STRICT => TRUE,
		Route::FILTER_TABLE => [
			'vse' => 'all',
			'panske' => 'men',
		],
	],
	'category' => [
		Route::VALUE => NULL,
		Route::FILTER_STRICT => TRUE,
		Route::FILTER_TABLE => [
			'domacnost' => 'household',
		],
	],
	'event' => [
		Route::VALUE => FALSE,
		Route::FILTER_TABLE => [
			'akce' => 1,
		],
	],
    'exclusive' => [
    	Route::VALUE => FALSE,
        Route::FILTER_TABLE => [
        	'exclusive' => 1,
        	],
        ],
]);
?>

Problém je takový, že když chci na stránku cs/produkt/vse/akce, tak mi to routu ani nechytne. Ano, je to proto, že mám Route::FILTER_STRICT => TRUE, ale kdybych to nastavený neměl, tak mi vznikne url taková ?gender=vse&category=1. A to taky nechci.

Jak docílit toho, aby při url ?gender=vse&event=1 se opravdu vygenerovala cs/produkt/vse/akce adresa?

Díky za odpověď.

David Matějka
Moderator | 6445
+
+2
-

ahoj, myslim, ze budes muset do masky pridat validacni pravidla na ty povoleny vyrazy

new Route('cs/produkt[/<gender vse|panske>][/<category domacnost>][/<event akce>][/<exclusive exclusive>]'