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

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?

RSS tématu Téma zavřeno