FORM addError v $form->onSuccess[] zobrazit prez AJAX

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

ahoj mam formular a chtel bych aby mi vracel chybovae hlasky prez ajax
v JS mam:

$("form.ajax").on('click', "#frmnewForm-ulozit", function (payload)
    {
        // cl(payload);
        $(this).ajaxSubmit(payload);

        return false;
    });

kdyz mam ve formulari

$form->addText('nazev', 'Název:')
                ->setRequired('Zadejte název značky.');

a znacku nezadam tak se spravne zobrazi ALERT okno s uvedenou hlaskou.

problem mam kdyz znacku vyplnim a chci zkontrolovat jestli znacka jiz neni v dtb.

public function defaultFormUlozit(MyForm  $form)
{
    $vals = $form->values;
    $presenter = $form->getPresenter();

	if(.....)
	{
		$form->addError('Znacka jiz existuje.');

tak se mi tato hlaska jiz nevrati ajaxem do ALERTmessage

jak??????

David Matějka
Moderator | 6445
+
0
-

proc zakladas po 15h stejny tema se stejnym dotazem?

vosy
Člen | 532
+
0
-

myslel jsem ze tady v te sekci by mi mohli pomoci.
Na puvodnim miste, nikdo nereagoval :(

Robyer
Člen | 74
+
0
-

IMHO to voláš v metodě onSuccess, ale měl bys to volat v nějaké dřívejší (onSubmit nebo jak se jmenuje). (ale nevím jestli to něčemu reálně pomůže)

Btw myslím, že všichni lidé, co tady radí, sledují všechny sekce a nechodí jen do těch „svých“ :)

Editoval Robyer (25. 12. 2013 11:27)

vosy
Člen | 532
+
0
-

$form->addError jsem presunul z onSuccess do onValidate

ale stale bez uspechu :(

Robyer
Člen | 74
+
0
-

Aha, už chápu…
Ten alert od setRequired() se nezobrazuje kvůli ajaxu, ale ta kontrola je přímo nadefinovaná v JavaScriptu. Ta tvoje kontrola probíhá na straně serveru, takže si to musíš „zajaxovat“ sám. Buď si přidat do JS vlastní kontrolu (kde by se při odeslání formuláře odeslal ajax požadavek a zkontroloval, jestli je to platné, a případně zobrazil alert), nebo si musíš „zajaxovat“ celý formulář… (tzn. asi obalit do snippetu, odesílat ho ajaxově a při zpracování dat ve formuláři ten celý snippet invalidovat).

Editoval Robyer (25. 12. 2013 14:59)

vosy
Člen | 532
+
0
-

Ahoj, diky za komunikaci.
Asi si nerozumime, setRequest uvedeny na policku ve formulari se mi prez ajax vrati, kdyz je chyba. Problem mam ze kdyz je podminka vyplneni policka uspesna , tak kontroluju zda nazev jiz existuje v dtb. A kdyz nazev existuje tak potrebuju vratit prez ajax hlasku. Myslel jsem ze se to vyresim tim ze pridam na formular vlastni chybu addError ve fci onValidate.

Potreboval bys neco vice poslat aby presne pochopil muj problem??

Dix

Robyer
Člen | 74
+
0
-

Už jsem se v tom trochu ztratil. Chtěl jsem říct, že tu chybovou hlášku od setRequired() podle mě nezískáváš ajaxem, ale ověřuje se to celé na straně klienta (bez komunikace se serverem). Takže zpracování tvé chybové hlášky ze serveru si možná budeš muset udělat sám (nevím jestli ten skript, který používáš pro ajaxové odeslání formuláře, umí zpracovávat ty chyby). Díval ses, co se ti ajaxem vrátí ze serveru za data?

vosy
Člen | 532
+
0
-

dix, nedari se mi to rozbehnou.

nevis o nejakej examplu kde se pro formulare pouziva nette.ajax.js?

akadlec
Člen | 1326
+
0
-

Tam není co vymýšlet, stačí volata init pro nette.ajax a formu přířadit class „ajax“