verifikácia mailu – zavináč, prázdne, alebo valídny mail + podobne url

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

Zdravím. S Nette začínam. Potreboval by som verifikovať vstup na validitu, či je to mail, ale zároveň aby bolo políčko dopredu vyplnené zavináčom a aby ho užívateľ mohol aj nevyplniť, alebo prípadne aj z nejakého náhodného dôvodu zmazať ten zavináč a tak odoslať. skúšal som addRule(Form:EMAIL.. skombinovať so setEmptyValue(‚@‘… alebo setDefaultValue(‚@‘… ale stále si to pýtalo aby som ten mail vyplnil. Dá sa to nejak, alebo to musím riešiť vlastným regulárnym výrazom?

Niečo podobné by som chcel s url adresou. Tam by som chcel, aby užívatel mohol zadať adresu s http:// na začiatku, ale mohol aj bez a aj nevyplnené aby to mohol nechať, na serverovej strane sa to už spracuje do jednotnej podoby.

Filip Procházka
Moderator | 4668
+
0
-

Co takto nějak?

$form->addText('email')
	->setEmptyValue("@")
	->addCondition(~Form::EQUAL, "@")
		->addRule(Form::EMAIL)
elvis
Člen | 11
+
0
-

Dal som to teraz takto:

<?php
$form->addText('mail', 'E-mail:', 20, 30)
		->setEmptyValue("@")
                ->addCondition(~Form::EQUAL, "@")
                	->addRule(Form::EMAIL);
?>

Ale stále si to pýta ten mail. Čo robím zle?

duke
Člen | 650
+
0
-

Nebo přesněji:

$form->addText('email')
        ->setEmptyValue('@')
	->addCondition($form::FILLED)
	        ->addRule($form::EMAIL);

EDIT: Resp. Hospilanovo řešení je vlastně špatně. Jde o to, že Nette automaticky ‚@‘ v inputu nahradí prázdným řetězcem (protože byla použita metoda setEmptyValue narozdíl třeba od setDefaultValue), a tudíž i pro případ ‚@‘ bude ta jeho podmínka splněna.

Editoval duke (13. 4. 2012 13:55)

elvis
Člen | 11
+
0
-

Jj, ďakujem, to druhé riešenie ide. Conditions som akosi opomenul, keď som študoval formuláre.