filtrovani pres ajax a nepředání persistentní proměnné

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

Ahoj, mám filtrování přes ajax, kde mám např. výrobce a zda je skladem nebo ne. Pokud vyberu vyrobce, zavolam handle kde udelam toto:

$this->filter['vyrobce'] = $id;
$this->invalidateControl();

pak kdyz jeste zaskrtnu zbozi skladem zavolam toto:

$this->filter['skladem'] = $value;
$this->invalidateControl();

problem je ze $this->filter se mi neustale prepisuje a neobsahuje po provedeni techto dvou akci napr. toto:

array('vyrobce' => 22, 'skladem' => 1)

ale je tam pouze vyrobce nebo skladem. Mam vse v komponente a filter definuji takto

/** @persistent */
	public $filter;

Poradite prosim co delam spatne? diky

Editoval spiider (29. 1. 2013 11:03)

besanek
Člen | 128
+
0
-

Plácnu od boku. Máš ty odkazy na handle také ve snippetu? Jinak se ti tam nejspíše posílá prázdný filter.

spiider
Člen | 162
+
0
-

Pravda ve snippetu je nemam, ale nechtel jsem je tam abych prekresloval jenom zobrazovane produkty a ne i filtr kde mam ruzne inputy apod. protoze pak jim musim zase nastavovat default hodnoty podle vyberu…ale jestli to nejde jinak......?
Myslel jsem ze public je proste public a ze se mi to bude prenaset vzdy a vsude…:)
diky

besanek
Člen | 128
+
0
-

Persistentní parametry se generují do linku automaticky. Pokud by se nepřenášeli, tak presenter nemá jak zjistit, jaká je hodnota té proměnné. Takže když je nemáš ve snippetu, tak ti tam zůstanou staré odkazy s původní hodnotou filtru.

Upravil bych to tak, že si filter budeš ukládat do session. Persistentní budeš mít pouze náhodný klíč k session, do které budeš plnit filtr. Ten klíč se vytvoří jen když není nastaven a měnit se nadále nebude, takže mít filtr ve snippetu mít nemusíš.

spiider
Člen | 162
+
0
-

OK udělám to přes session.

díky za reakce.