nette forms a „please wait loading“

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

Ahoj, opět se obracím s dotazem sem.
Nevím jak inteligentně vyřešit aby při odeslání formuláře v nette forms se zobrazil
„please wait loading“.
Mám formulář …

public function createComponentAddMeetingLogForm() {
    $form = new Form();
    $form->addProtection();
    $form->addHidden('type');
    $form->addHidden('mid');
    $form->addText('name');
    $form->addTextArea('description');
    $form->addUpload('file_1')
            ->addRule(Form::MAX_FILE_SIZE, 'Maximum size file is ' . $this->util_services->getMaxSizePost() . '.', $this->util_services->getMaxSizePostBytes());

    $form->onSuccess[] = array($this, "addMeetingLogFormSucceeded");
    return $form;
}

A nevím jak při odeslání zobrazit loading.
Jinde v projektu to mám řešené přes tenhle plugin. Takhle jsem si nějak udělal funkce v js.

function pleaseWaitStart() {
    $('body').pleaseWait();
}

function pleaseWaitStop() {
    $('body').pleaseWait('stop');
}

Neřešili jste to někdo? Nebo nemá to už nette forms vyřešeno nějak?

Budu rád za každou odpověď, díky moc.

MW
Člen | 626
+
0
-

Třeba..

v addMeetingLofFormSucceeded si invaliduj nějaký snippet

...
$this->redrawControl('plswait');
...

a v šabloně budeš mít

{snippet plswait}
    <script>
	$('body').pleaseWait();
    </script>
{/snippet}
Michal Hlávka
Člen | 190
+
0
-

MW napsal(a):

Třeba..

v addMeetingLofFormSucceeded si invaliduj nějaký snippet

...
$this->redrawControl('plswait');
...

a v šabloně budeš mít

{snippet plswait}
    <script>
	$('body').pleaseWait();
    </script>
{/snippet}

On to chce behem odeslani zobrazit, tvoje by se zobrazilo az by se prave na nic necekalo :-). Navic by se tvoje varianta zobrazovala vzdy, protoze si tam nechranis kdy se zobrazit ma a kdy ne.

Na tohle jsem jednou delal pull request https://github.com/…etteForms.js#L207, kdy jsem pozadoval pridat druhy paramter do validovani formulare. Muzes na form zavesit udalost onSubmit kdy valideForm zkontroluje pouze, jestli je formular validni, pokud je, necha ho odeslat a zaroven zavola pleaseWait metodu. Pri ziskani odpovedi serveru, muzes invalidovat snippet, odchytit ze ze serveru prisel a wait stopnout, teda za predpokladu, ze odesilas formular ajaxem.

Editoval emptywall (11. 10. 2016 16:30)

ondrusu
Člen | 118
+
0
-

Díky za odpoveď.
Koukám na to … Bohužel se to dělá POSTem.
Tak to asi jediný způsob je to navázat na ten POST že?
Dá se to nějak udělat?

Michal Hlávka
Člen | 190
+
0
-

ondrusu napsal(a):

Díky za odpoveď.
Koukám na to … Bohužel se to dělá POSTem.
Tak to asi jediný způsob je to navázat na ten POST že?
Dá se to nějak udělat?

No pokud formular odesilas POST metodou, je to jednodussi. Je brzo rano a ja jeste nemel svoji kavu, ale muzes to udelat v takovem smyslu.

...form onsubmit="wait(this)"...

function wait(form) {
	if (Nette.validateForm(form, true)) {
		$('body').pleaseWait();
		return true;
	} else {
		Nette.validateForm(form, false); // timto si nejsem jistej jestli musim spoustet, je to kvuli tomu, aby ti vyskocili alerty u formulare, pokud neprosla validace
	}
}
ondrusu
Člen | 118
+
0
-

díky moc já to vyzkouším a dám vědět ;)

MW
Člen | 626
+
0
-

On to chce behem odeslani zobrazit, tvoje by se zobrazilo az by se prave na nic necekalo :-). Navic by se tvoje varianta zobrazovala vzdy, protoze si tam nechranis kdy se zobrazit ma a kdy ne.

No pokud by to volal na zacatku v addMeetingLofFormSucceeded pak provadel akce dle potřeby a pak stejnym zpusobem zase zavrel, tak by to asi splnilo ucel, alespoň tak jsem to pochopil a podobnym zpusobem resim i praci s modalnimi okny :)

Editoval MW (14. 10. 2016 10:28)

ondrusu
Člen | 118
+
+1
-

MW: tvoje řešení jsem nezkoušel, díky za tvůj čas a zajímavý příspěvek, vyřešil jsem to jak psal EmptyWall

function wait(form) {
  if (Nette.validateForm(form, true)) {
      $('body').pleaseWait();
      return true;
  } else {
      Nette.validateForm(form, false); // timto si nejsem jistej jestli musim spoustet, je to kvuli tomu, aby ti vyskocili alerty u formulare, pokud neprosla validace
  }
}

Díky všem :)