odstranění persistentních parametrů z URL

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

Zdravím, chci se zeptat, zda lze nějak pomocí definice Route odstranit z URL persistentní parametry.
Vytváří se mi URL ve tvaru http://example.com/?param1=1&param2=2&param3=1&param4=2&action=default.

Pomocí Routy:

$router[] = new Route('<param1>-<param2>/', array(
		'presenter' => 'Page',
		'param1' => NULL,
		'param2' => NULL,
	));

dostávám tvar URL http://example.com/1-2/?param3=1&param4=2&action=default.

Chci se zbavit těch ostatních parametrů, které (zatím) nemám v Routě definované.

Děkuji za pomoc.

Panda
Člen | 569
+
0
-

Mělo by pomoci jim při vytváření odkazu nastavit výchozí hodnotu, popř. NULL:

$presenter->link('default', array('param1' => 1, 'param2' => 2, 'param3' => NULL, 'param4' => NULL));

Vzhledem k tomu, že jsem zatím vždycky měl výchozí hodnotu persistentního parametru nedefinovanou (tedy NULL), tak nemohu říct, zda je správně jim nastavit výchozí hodnotu nebo NULL.

pekinen
Člen | 29
+
0
-

Panda napsal(a):

Mělo by pomoci jim při vytváření odkazu nastavit výchozí hodnotu, popř. NULL:

$presenter->link('default', array('param1' => 1, 'param2' => 2, 'param3' => NULL, 'param4' => NULL));

Vzhledem k tomu, že jsem zatím vždycky měl výchozí hodnotu persistentního parametru nedefinovanou (tedy NULL), tak nemohu říct, zda je správně jim nastavit výchozí hodnotu nebo NULL.

Jenže já jim nechci měnit hodnotu. Tu stále potřebuju. ;)

Blizzy
Člen | 149
+
0
-

Co tohle?

$router[] = new Route('<param1>-<param2>/', array(
                'presenter' => 'Page',
                'param1' => NULL,
                'param2' => NULL,
		'param3' => 1,
		'param4' => 2,
		'action' => 'default',
        ));

Editoval Blizzy (21. 8. 2009 12:36)

pekinen
Člen | 29
+
0
-

Blizzy napsal(a):

Co tohle?

$router[] = new Route('<param1>-<param2>/', array(
                'presenter' => 'Page',
                'param1' => NULL,
                'param2' => NULL,
		'param3' => 1,
		'param4' => 2,
		'action' => 'default',
        ));

Tím se jich sice zbavím, ale pak budou jejich hodnoty konstantní a já je potřebuju taky měnit…
Nebo se pletu?

Editoval pekinen (21. 8. 2009 12:42)

Foowie
Člen | 269
+
0
-

No, nějak se ty parametry k serveru dostat musí :)
Takže buď použij ajax (takže v řádku adresy ty proměnné nebudou vidět), nebo si ty parametry ukládej do sessions (má to ale hodně nevýhod a popravdě ani nevím jestli to někdo používá :)).
Možná ještě by to šlo posílat post metodou … nějaký hidden input, místo poslání požadavku vložíš ten požadavek do inputu a pošleš serveru ať si to pořeší)… ale osobně bych použil tak maximálně tu první metodu…

Panda
Člen | 569
+
0
-

pekinen napsal(a):

Blizzy napsal(a):

Co tohle?

$router[] = new Route('<param1>-<param2>/', array(
                'presenter' => 'Page',
                'param1' => NULL,
                'param2' => NULL,
		'param3' => 1,
		'param4' => 2,
		'action' => 'default',
        ));

Tím se jich sice zbavím, ale pak budou jejich hodnoty konstantní a já je potřebuju taky měnit…
Nebo se pletu?

Mno nebudou konstantní, druhý parametr konstruktoru třídy Route je na výchozí hodnoty. presenter je tam také uveden a konstantní není…

A původně jsem dotaz špatně pochopil, takže se omlouvám.