validacia formularov – zmena štýlu hlásenia

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

Ahojte,

keď validujem formulár, ako napr. addrule, setrequired, … raz sa mi hlásenie „vlož e-mail v správnom formáte“ zobrazilo ako červený text pri poli e-mail a teraz mi to ukazuje v okne alert() … ako sa to dá meniť? Ďiky

Šaman
Člen | 2666
+
0
-

Alert ti vyhodí JS validace (netteForms.js), červenou hlášku zařídí serverová validace. Měnit nějakým přepínačem se to nedá, můžeš si odlinkovat, nebo upravit ten JS.

Takeshi
Člen | 596
+
0
-

Šaman napsal(a):

Alert ti vyhodí JS validace (netteForms.js), červenou hlášku zařídí serverová validace. Měnit nějakým přepínačem se to nedá, můžeš si odlinkovat, nebo upravit ten JS.

Len keď odlinkujem netteForm.js, tak mi nerobi vobec validaciu ako „vlož email“ atď …

Mysteria
Člen | 797
+
0
-

Dělá, ale na serveru, tnz. když odešleš formulář, tak se ti zobrazí chyba (pokud je teda někde vypisuješ).

Šaman
Člen | 2666
+
0
-

Ještě je otázka, jak vykresuješ formulář. Jestli celý vestavěným rendererem {control fooForm}, tak to ty chyby určitě vykresluje. Jestli si ho vykresluješ manuálně (ať už makry {form}{/form}, nebo přímo vlastní šablonou), tak je na tobě kam, případně jestli je vypíšeš.

Takeshi
Člen | 596
+
0
-

Mysteria napsal(a):

Dělá, ale na serveru, tnz. když odešleš formulář, tak se ti zobrazí chyba (pokud je teda někde vypisuješ).

Žiaľ mne to nekontroluje … najprv som tam mal link na netteForm.js … všetko išlo ok, teda nemal som nič vyplnené a stlačil som odoslať … napísalo mi „vlož email“ .. keď som odstránil link *.js … hneď ma hodilo na „formular bol odoslaný“ … bez validacie

David Matějka
Moderator | 6445
+
0
-

ukaz, jak vytvaris ten formular

Editoval matej21 (14. 7. 2014 13:50)

Takeshi
Člen | 596
+
0
-

cely presenter

<?php

namespace App\Presenters;

use Nette,
	App\Model;
use Nette\Application\UI\Form;
/**
 * KontaktnyFormular presenter.
 */
class KontaktnyFormularPresenter extends BasePresenter
{
	public function renderDefault()
	{

	}

        public function createComponentContactForm()
        {
            $form = new Form();
            $form->addText('email','E-mail',30)
                 ->addRule(Form::EMAIL,"Zadaj e-mail v správnom formáte !")
                 ->setRequired("vlož svoj e-mail !");
            $form->addText('subject','Predmet',30)
                 ->setRequired("O čo ide ?");
            $form->addTextArea('content','Správa',30,6)
                 ->setRequired("Vlož správu !");
            $form->addSubmit('submit','Odošli');
            $form->elementPrototype->novalidate("novalidate");
            $form->onValidate[] = callback($this,'successFormSubmitted');
            return $form;
        }

        public function successFormSubmitted(Form $form)
        {
            $values = $form->getValues();
            $this->flashMessage('Správa bola úspešne odoslaná.');
            $this->redirect('Homepage:');
        }
}

… nevsimol som si, že tam je aj

$form->elementPrototype->novalidate("novalidate");

… no aj tak … ked som to odstránil …
ukazuje mi to tu vseobecnu hlasku vypln toto pole … pri vsetkom … a ignoruje addRule

Mysteria
Člen | 797
+
+1
-

@Takeshi: A nemáš náhodou odesílání přes metodu ->onSubmit[]? Tam se to nekontroluje, je potřeba navěšet to na metodu ->onSuccess[] nebo při použití ->onSubmit[] se ptát $form->isSuccess() nebo tak nějak.

Editoval Mysteria (14. 7. 2014 13:57)

Takeshi
Člen | 596
+
0
-

Mysteria napsal(a):

@Takeshi: A nemáš náhodou odesílání přes metodu ->onSubmit[]? Tam se to nekontroluje, je potřeba navěšet to na metodu ->onSuccess[] nebo při použití ->onSubmit[] se ptát $form->isSuccess() nebo tak nějak.

Mal si pravdu .. nemal som to síce na ->onSubmit() … ale na ->onValidate[] … u6 je to OK :-) Ďakujem

David Matějka
Moderator | 6445
+
+1
-

nema to byt na onSubmit, ale onSuccess