Validace Data/času ve formuláři

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

Zdravim,
bude někdy podpora v Nette pro validaci data/času jako např. pro email?
Jak teď řešíte validaci data/času?

Já jsem teď zkoušel REGEXP, ale háže mi to chybu (samozřejmě validace proběhne správně):

Warning: preg_match() [function.preg-match]: Compilation failed: range out of order in character class at offset 31 in libs/Nette/Forms/Controls/TextBase.php on line 187

Díky za odpovědi

Editoval CZechBoY (17. 6. 2011 0:14)

22
Člen | 1478
+
0
-

REGEXP ti neřeší validní datum, jako třeba 29–2–2001.
Dá se to nějak takto:

public static function check($date)
{
	try {
		$check = new DateTime($date);

	} catch(Exception $e){
		throw new Exception('Invalid date: '.$date);
	}

	if(isset($check)) {
		$date = preg_replace('/[-\/]/', '.', $date);
		$date = explode('.', $date);
		//pro dd.mm.yyyy
		return checkdate($date[1], $date[0], $date[2]);
	}
}

Editoval 22 (17. 6. 2011 0:41)

Jan Tvrdík
Nette guru | 2595
+
0
-

CZechBoY wrote:

Jak teď řešíte validaci data/času?

Používám DatePicker.

CZechBoY
Člen | 3608
+
0
-

22: co když vložim ve formátu yyyy-mm-dd ?
Jan: vyzkoušim. je tam i validace toho vstupního pole?

22
Člen | 1478
+
0
-

validaci formátu si musíš dodělat, co se týká pořadí argumentů checkdate()…DateTime by to měl sežrat.

CZechBoY
Člen | 3608
+
0
-

tak jsem tam nějakej naflákal ten DatePicker
a jak řešíš validaci času? TimePicker? :D

voda
Člen | 561
+
0
-

CZechBoY napsal(a):
TimePicker? :D

Můžeš vyzkoušet DateInput.