Komponenta, persistentní parametry a jejich výchozí hodnoty?

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

Ahoj,

vytvořil jsem si komponentu na filtrovací formulář a po odeslání formuláře bych chtěl zobrazit tlačítko na zrušení filtru. Každý input ve formuláři má „svůj“ persistentní parametr.

Po odeslání formuláře nastavím persistentní parametry a přesměruji na „default“, takže dostanu URL s parametrama, které nebudou prefixované názvem komponenty.

Po přesměrování ale ztrácím kontrolu nad tím, jestli formulář byl nebo nebyl odeslán, nevím tedy, kdy tlačítko „Zrušit filtr“ zobrazit a kdy ne. Poradí někdo? :-)

Možná by i stačilo porovnat aktuální hodnoty parametrů s výchozíma parametrama persistentních parametrů, ale nic takového asi není možné (?)

Díky za odpovědi.

martinprihoda
Člen | 8
+
0
-

Defaultní hodnotu si můžeš definovat jako u každého parametru, a nebo porovnávej vůči NULL.

<?php
/** @persistent */
public $parameter = -1
?>

Editoval martinprihoda (7. 4. 2015 9:07)

joe
Člen | 313
+
0
-

To samozřejmě můžu a taky to dělám, pak ale nemůžu porovnávat s NULL, protože v persistentních parametrech mám i pole.

/** @persistent */
public $foo = array(
   'bar' = 5,
)

A já asi nijak nejsem schopný po přesměrování zjistit (nevím, ptám se), jaké ty výchozí hodnoty byly, abych je mohl porovnat a rozhodnout, jestli se filtr aplikoval (formulář se odeslal, persistentní hodnoty změnily svou výchozí hodnotu) a já mohl zobrazit tlačítko pro zrušení filtru.

Blujacker
Člen | 89
+
0
-

To jestli byl ten formular odeslan (a jestli tedy zobrazit tlacitko pro zruseni filtru) by se dalo zjisti pres:

$form["myComponent"]->isSubmitted()
joe
Člen | 313
+
0
-

David Matějka

Díky, že mě něco podobného nenapadlo dřív, přesně to jsem hledal, konkrétně

dump(get_class_vars(get_class($this)));

Blujacker
To nejde, potřebuji to řešit po redirectu, takže isSubmitted() vrátí vždy FALSE.


Je vůbec optimální řešit filtr tak, že pro každou položku formuláře bude persistentní parametr?