Tok aplikace pri zpracovani formulare

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

Ahoj,

Mam presenter a ten obsahuje :

  1. actionDefault
  2. createComponent pro form1
  3. createComponent pro form2
  4. call back pro form1
  5. call back pro form2

View obsahuje html a uprostred je snippet, ktery obsahuje form1 a form2.

  • Formulare form1 a form2 pracuji nad stejnymy daty. Tudiz akce z form1 ovlivni podobu(obsah selectu) jak form1, tak i form2.

Kdyz pres Ajax zpracuji akci z form1 tak tok aplikace je nasledujici :

  1. actionDefault
  2. createComponent pro form1
  3. call back pro form1 → invaliduji snippet
  4. createComponent pro form2

Problem je ten, ze navraceny vysledek obsahuje aktualni informace pro form2 a stare informace pro form1.

Jak ciste zajistit, aby se ve snippetu nebo po zpracovani akce pregenerovalo vse co chci.

Diky, Chuck777 :)

PS : Jsem s Nette porad v zacatcich, tak me nekamenujte :)

natrim
Člen | 73
+
0
-

vždycky je lepši když ukažeš kousek kod at nemusime tapat na slepo ale pokud to chapu dobre
tak staci ked budes form1 i form2 plnit daty az v renderDefault

Chuck777
Člen | 10
+
0
-

Ahoj,

diky za rychlou pomoc.

Takze, jestli to chapu dobre :

  1. createComponent pro form1 – vytvori jen model formulare

a pak ve „finale“ se vola renderDefault(). Ta nacte data z db a naplni jimi form.

Jde vytvorit render metoda pro kazdy prvek zvlast? neco jako renderForm1 → to jsem nikde zatim nenasel.

natrim
Člen | 73
+
0
-

render je pro akce viz Životní cyklus presenteru

render se provadi pro vykresleni a to je doba kdy chces naplnit sablonu daty – tedy i data do formu

proste udelas neco podobneho

<?php

public function renderDefault(){
$row1 = $this->model->getDataForForm1();
$row2 = $this->model->getDataForForm2();

$this['form1']->setDefaultValues($row1);
$this['form2']->setDefaultValues($row2);
}

?>
Chuck777
Člen | 10
+
0
-

Parada s timto se to kompletne resi.

Jeste nas napadla uprava :

  1. V action nactu data pro form1 a form2.
  2. createComponentForm1 – nastavim data pro form1 (ty se vyuziji pro kontrolu odeslaneho formu)
  3. createComponentForm2 – nastavim data pro form2
  4. call back form1 – muze a nemusi probehnout
  5. render – zde znovu priradim data do formularu. V pripade ze probehl call back form1, data se ve formulari1 zaktualizuji.

Je to spravna vize?

natrim
Člen | 73
+
0
-

ten formular ty data pravdepodobne nepotrebuje pokud podle nich negenerujes napr. moznosti selectu ci mnozstvi prvku

takze by je stacilo nacist az v render fazi

Chuck777
Člen | 10
+
0
-

ten formular ty data pravdepodobne nepotrebuje pokud podle nich negenerujes napr. moznosti selectu ci mnozstvi prvku

Prave ze je pouzivam v selectu. Jinak bych na to asi nenarazil.

jeste jednou diky za pomoc :)