Samostatné Forms, bez zbytku Nette – vyprázdnění formuláře po odeslání

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

Zdravím,
odesílám formulář následujícím způsobem. Používám z Nette jenom Forms, takže žádné presentery, ani šablony. Nemůžu však docílit toho, aby se po odeslání smazal vyplněný obsah formuláře, ani přes setDefaults($default, TRUE), nebo to dělám špatně. Proto prosím o radu.

<?php
if($form_contact->isSubmitted()) {
    if($form_contact->isValid()) {
      $values = $form_contact->getValues();
      ...
    }
  }
?>

Děkuji

Editoval toka (3. 1. 2010 20:15)

nAS
Člen | 277
+
0
-

Po odeslání formuláře by se měla stránka přesměrovat (třeba na sebe samu s prázdným formulářem), aby v případě obnovení stránky nedošlo ke znovuodeslání formuláře.

Ondřej Mirtes
Člen | 1536
+
0
-

Říká se tomu Post/Redirect/Get pattern.

toka
Člen | 249
+
0
-

Ondřej Mirtes napsal(a):

Říká se tomu Post/Redirect/Get pattern.

S tím nemám problém, a vím to :-) Spíš mi šlo o to, jak lze použít redirect, když nemůžu udělat $this->redirect(), protože se nejedná o aplikaci MVC, ale pouze o využití Forms. Dá se třeba zavolat ten redirect() nějak staticky? Resp. jinak, jde to pomocí Nette, nebo to je na programátorovi, aby se o to postaral?

Děkuji.

Ondřej Mirtes
Člen | 1536
+
0
-

To je na tobě a tvojí aplikaci. Můžeš si klidně zavolat header('Location: ' . $_SERVER['PHP_SELF']); exit;.

toka
Člen | 249
+
0
-

Ondřej Mirtes napsal(a):

To je na tobě a tvojí aplikaci. Můžeš si klidně zavolat header('Location: ' . $_SERVER['PHP_SELF']); exit;.

Ano, tak to již řeším, jen mne zajímalo, jestli to nejde přímo přes „něco“ v Nette. Mnohokrát děkuji.

Ondřej Mirtes
Člen | 1536
+
0
-

Kdybys využíval Application a MVC, na které je $this->redirect() dost navázané, tak není problém no :)

toka
Člen | 249
+
0
-

Ondřej Mirtes napsal(a):

Kdybys využíval Application a MVC, na které je $this->redirect() dost navázané, tak není problém no :)

Teď už vím, že i když nepoužívám Application a MVC, ale pouze samostatně, mohu přesměrování provádět pomocí Environment::getHttpResponse()->redirect('...');. To Nette je prostě úžasné! :-)