Formular z akrabatu jako filtr hodnot

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

Zdravím. Chtěl bych mít formulář jako je v příkladu akrabat (form jako componenta), ale používat ho jako filtr zobrazených hodnot. Tzn. že stránka se normálně zobrazí se všemi hodnotami a jen když něco vyplním a odešlu, tak mě to přesměruje na tu samou stránku, ale někde to předá tu hodnotu z formuláře. Bohužel když dám něco do $this->template->promenna … tak po redirectu ta proměnná už tam není. Určitě je nějaký chytrý řešení jak se to předává že? :-)

EDIT: nechtěl bych to dělat přes perzistení proměnnou. Jen jednoduše a jednoúčelově poslat nějakou hodnotu.

EDIT2: Proč vždycky najdu řešení až když se někde blbě zeptám? :-D. Myslím, že se to řeší v redirectu přes parametry https://doc.nette.org/…n/presenters

PS: nebylo by nějaké stručné vysvětlení rozdílu mezi akcí(action) a hande(signálem)?

Editoval Karl-von-bahnhof (19. 2. 2010 23:21)

Mikulas Dite
Člen | 756
+
0
-

Action se volá vždy podle určité url, například ContactPresenter:actionViewContact, a handle by byl například handleDeleteContact, tj. něco, na co se uživatel dostane nějakým vstupem + potom by měl následovat redirect, protože url je stavová a nechceme při refreshi provádět ten handle znova.

EDIT: https://forum.nette.org/…ni-parametry, https://doc.nette.org/…tion-vs-view a signály jsou tuším dobře pochopitelné z http://zdrojak.root.cz/…rk-mvc--mvp/ potažmo http://zdrojak.root.cz/…refactoring/

Editoval Mikulas Dite (20. 2. 2010 9:12)

Honza Kuchař
Člen | 1662
+
0
-

Ještě taková věc: action proběhne vždy a to handle proběhne jakoby před tím action.

Karl-von-bahnhof
Člen | 5
+
0
-

Ještě bych se chtěl zeptat, jak v tom formuláři nastavit, aby hodnoty zůstaly vybrané. Tzn., zvolim si něco ze selectu odeslu/redirect na tu samou stránku a vybraná hodnota zůstane vybraná. Fromulář mám appForm jako komponentu.

Blizzy
Člen | 149
+
0
-

Karl-von-bahnhof napsal(a):

Ještě bych se chtěl zeptat, jak v tom formuláři nastavit, aby hodnoty zůstaly vybrané. Tzn., zvolim si něco ze selectu odeslu/redirect na tu samou stránku a vybraná hodnota zůstane vybraná. Fromulář mám appForm jako komponentu.

Metodou setDefaults nastavíš to, co chceš aby tam bylo vybraného (např. u presenteru v action: $this['formular']->setDefaults(array('mujselect' => 10))). Přijímá pole hodnot, kde klíče jsou názvy prvků formuláře. Tyto vybrané hodnoty asi budeš muset mít někde uložené tak, aby tam zůstávali – v databázi, session, cookies…

Editoval Blizzy (20. 2. 2010 17:44)

Karl-von-bahnhof
Člen | 5
+
0
-

To je takový obecný. Chápu, že volby z formuláře jsou uložit do sessions, databáze nebo třeba i do souboru, ale je to takový divný.
Já mám presenter, kterej zobrazí stránku s formulářem. Formulář funguje jako filter položek a při odeslání si posílám ty hodnoty formuláře jako parametry redirectu a pak upravuju dibi::dataSource.

Formulář je jako komponenta v akrabatu (neregistrovaná). Zajímalo by mě jak propojit tu komponentu s presenterem, kterej vlastně parametry ve funkci renderDefault zna, aby moh rict komponente co ma nastavit za default hodnoty.

Příde mi, že by moh existovat lepší způsob, než to všechno někam externě ukládat a pak vytahovat.