Co s Form po odeslání, jak vymazat?

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

Ahoj, pár hodin se s tím rozčiluju, tak jsem raději přišel požádat zkušené:

Mám objednávkový formulář, který odesílá email, ovšem co po odeslání emailu? jak zresetnout formulář, hodit hlášku o úspěchu?

Nemám to v nette aplikaci ale jen tak v prostoru.

Prosíím o navedení na správnou cestu :) díky :)

David Matějka
Moderator | 6445
+
0
-

Po uspesnem odeslani bys mel presmerovat. Krom toho, ze to smaze ten formular, tak to zabrani opakovanemu odeslani.

Pavel Macháň
Člen | 282
+
0
-

pkristian napsal(a):

Ahoj, pár hodin se s tím rozčiluju, tak jsem raději přišel požádat zkušené:

Mám objednávkový formulář, který odesílá email, ovšem co po odeslání emailu? jak zresetnout formulář, hodit hlášku o úspěchu?

Nemám to v nette aplikaci ale jen tak v prostoru.

Prosíím o navedení na správnou cestu :) díky :)

$form->onSuccess[] = function() {
	$this->flashMessage('Nějaký text o stavu odeslání');
	$this->redirect('this');
};

Editoval EIFEL (5. 6. 2014 16:55)

Michal Vyšinský
Člen | 608
+
+1
-

Nemám to v nette aplikaci ale jen tak v prostoru.

Myslím, že předchozí odpovědi jsou ti k ničemu. Toto je nette fórum, tak sem prosím nedávej takovéto dotazy. Na to je www.djpw.cz

Editoval Michal Vyšinský (5. 6. 2014 17:06)

pkristian
Člen | 29
+
-1
-

Po odeslání vím co mám dělat, ale nevím jak…,

onSuccess to asi neude potřebuju to jako reakci na odeslaný mail, což mám v try..catch … :( když se napovede, tak poslat omluvu, když jo, tak hurá a reset

Mysteria
Člen | 797
+
0
-

Protože to není v Nette, tak budeš muset do session uložit tu zprávu, reloadnout stránku a pak tu zprávu zobrazit a smazat. Ale nechápu, proč se ptáš tady, když to nijak nesouvisí s Nette.

pkristian
Člen | 29
+
0
-

Mysteria napsal(a):

Protože to není v Nette, tak budeš muset do session uložit tu zprávu, reloadnout stránku a pak tu zprávu zobrazit a smazat. Ale nechápu, proč se ptáš tady, když to nijak nesouvisí s Nette.

ono totiž když je Nette takový úžasný framework, tak jsem si říkal, že to musí mít přímo v objektu Form pořešený, nějaký ten reload, nebo alespoň reset…

@Michal Vyšinský tím jsem myslel, že to není v kompletní aplikaci s presentery, moduly a bootstrapem, ale „jen“ načtená knihovna a vytvořenej formulář v třídě Nette/Form

Oli
Člen | 1215
+
0
-

pkristian: Ono jde o to, že Nette\Form se stará o formulář. Přesměrování a flash zprávy má na starosti zase jiná část. Proto, pokud máš jen Form, tak to nemůžeš použít. Co můžeš použít je tady, pokud máš tu třídu kterou jsem ti poslal. Pokud máš jinou, tak si ji najdi…

Jestli chceš využít flash a redirect, tak si musíš nalinkovat části, který to obsluhujou. Po rozdělení by to (podle mě) mělo jít relativně jednoduše, ale nevím. Nikdy jsem to neřešil.

besanek
Člen | 128
+
0
-

Smazat hodnoty formuláře by mělo jít takto.

$form->setValues(array(), true);

Každopádně je to zbytečné. Jak píšeš, když se nepovede tak nepřesměrovat, což zanechá hodnoty pro opravení, a poslat chybovou hlášku a když se povede tak přesměrovat, což zresetuje uživatelem zadané hodnoty. Ale možná jen nechápu o co se snažíš.

pkristian
Člen | 29
+
0
-

besanek napsal(a):

Smazat hodnoty formuláře by mělo jít takto.

$form->setValues(array(), true);

Každopádně je to zbytečné. Jak píšeš, když se nepovede tak nepřesměrovat, což zanechá hodnoty pro opravení, a poslat chybovou hlášku a když se povede tak přesměrovat, což zresetuje uživatelem zadané hodnoty. Ale možná jen nechápu o co se snažíš.

Mno šlo o to že jsem nemohl posílat headery, session ani koláčky, páč jsem nevěděl kde to bude běžet,

jinak díky, už jsme to vyřešil javascriptem… alert(‚bla bla‘);window.location.href…

takžě „sbohem a díky za ryby“ :)