Validace – Nette\Utils\Validators
Nette\Utils\Validators je statická třída s užitečnými funkcemi pro validaci dat.
Všechny příklady předpokládají vytvořený alias:
use Nette\Utils\Validators;
Pravidla
Definice pravidel se zapisuje podobně jako se používají helpery v latte.
Jednotlivá pravidla se oddělují svislítkem (|) a případné parametry se
zapisují za dvojtečku.
| Typ | |
|---|---|
bool, boolean |
booleanovská hodnota |
int, integer |
celé číslo |
float |
desetinné číslo |
number |
celé nebo desetinné číslo |
numeric |
číslo včetně textové reprezentace |
numericint |
celé číslo včetně textové reprezentace |
string |
string |
unicode |
UTF-8 string |
array |
pole |
list |
neasociativní pole |
object |
objekt |
resource |
zdroj |
scalar |
skalární hodnota (int, float, bool
nebo string) |
callable |
callback |
null |
NULL |
| Hodnota | |
email |
|
url |
URL |
none |
„prázdná hodnota“ |
| Speciální | |
pattern |
… |
alpha |
… |
digit |
… |
lower |
… |
upper |
… |
space |
… |
xdigit |
… |
is($value, $expected)
Ověří, zda vstup odpovídá pravidlům.
Validators::is('Nette Framework', 'string:15'); // string o délce 15 znaků
Validators::is('Nette Framework', 'string:8..'); // string o délce minimálně 8 znaků
Validators::is('Nette Framework', 'string:..32'); // string o délce maximálně 32 znaků
Validators::is('Nette Framework', 'string:8..32'); // string o délce minimálně 8 a maximálně 32 znaků
Validators::is(23, 'int:0..10'); // celé číslo od 0 do 10
Validators::is(1, 'int|float'); // celé nebo desetinné číslo (lze zapsat i jako 'number')
assert($value, $expected, $label = ‚variable‘)
Ověří, zda vstup odpovídá pravidlům. Pokud ne, vyhodí výjimku.
Validators::assert('Nette Framework', 'string:15'); // ok
Validators::assert('Lorem ipsum dolor sit', 'string:78'); // exception
// The variable expects to be string:78, string 'Lorem ipsum dolor sit' given.
assertField($arr, $field, $expected = NULL, $label = „item ‚%‘ in array“)
Ověří, zda prvek v poli odpovídá pravidlům. Pokud ne, vyhodí výjimku.
$arr = array('nette' => 'framework');
Validators::assertField($arr, 'nette', 'string:15'); // ok
Validators::assertField($arr, 'foo', 'string:15'); // exception
// Missing item 'foo' in array.
Validators::assertField($arr, 'nette', 'int'); // exception
// The item 'nette' in array expects to be int, string 'framework' given.
Validátory
isNumericInt($value)
Ověří, zda je vstup celé číslo.
Validators::isNumericInt(23); // true
Validators::isNumericInt(1.78); // false
Validators::isNumericInt('42'); // true
Validators::isNumericInt('3.14'); // false
Validators::isNumericInt('nette'); // false
isNumeric($value)
Ověří, zda je vstup číslo.
Validators::isNumeric(23); // true
Validators::isNumeric(1.78); // true
Validators::isNumeric('42'); // true
Validators::isNumeric('3.14'); // true
Validators::isNumeric('nette'); // false
isCallable($value)
Ověří, zda je vstup platný callback.
Validators::isCallable('Foo::bar'); // true
Validators::isCallable(array(Foo, bar)); // true
Validators::isCallable(array($foo, 'bar')); // true
Validators::isCallable(callback('Foo::bar')); // true
Validators::isCallable('Lorem ipsum dolor sit...'); // false
Validators::isCallable(23); // false
Validators::isCallable(FALSE); // false
isUnicode($value)
Ověří, zda je vstup platný UTF-8 string.
Validators::isUnicode('nette'); // true
Validators::isUnicode(''); // true
Validators::isUnicode(1); // false
isNone($value)
Ověří, zda je vstup „prázdný“.
Validators::isNone(0); // true
Validators::isNone(''); // true
Validators::isNone(FALSE); // true
Validators::isNone(NULL); // true
Validators::isNone('nette'); // false
isList($value)
Ověří, zda je vstup neasociativní pole.
Validators::isList(array('foo', 'bar')); // true
Validators::isList(array('foo' => 'Bar')); // false
isInRange($value, array $range)
Ověří, zda je vstup v daném rozsahu.
Validators::isInRange(5, array(0, 5)); // true
Validators::isInRange(23, array(NULL, 5)); // false
Validators::isInRange(23, array(5)); // true
Validators::isInRange(1, array(5)); // false
isEmail($value)
Ověří, zda je vstup platná e-mailová adresa.
Validators::isEmail('example@nette.org'); // true
Validators::isEmail('nette'); // false
isUrl($value)
Ověří, zda je vstup platná URL adresa.
Validators::isUrl('http://nette.org'); // true
Validators::isUrl('nette'); // false
Komentáře 
Patrik Votoček | 4. 2. 2012, 11:11 | comment
@brabo: nejde o to co je důležitější. Jde o to že datum podléhá různým formátům (v USA se zapisuje jinak než unás v ČR).

brabo | 4. 2. 2012, 10:06 | question
Bude Nette konečně podporovat validaci data? Přijde mi to jako dost elementární věc. V čem je validace emailu důležitější než validace data? :)