Validace dat

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í filtry 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 E-mail
url URL
none „prázdná hodnota“
Speciální
pattern
alpha
digit
lower
upper
space
xdigit

is($value, string $expected): bool

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, string $expected, string $label=‚variable‘): void

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(array $arr, string|int $field, string $expected=null, string $label=„item ‚%‘ in array“): void

Ověří, zda prvek v poli odpovídá pravidlům. Pokud ne, vyhodí výjimku.

$arr = ['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(mixed $value): bool

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(mixed $value): bool

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(mixed $value): bool

Ověří, zda je vstup platný callback.

Validators::isCallable('Foo::bar'); // true
Validators::isCallable([$foo, 'bar']); // true
Validators::isCallable(['Foo::bar']); // true
Validators::isCallable('Lorem ipsum dolor sit...'); // false
Validators::isCallable(23); // false
Validators::isCallable(false); // false

isUnicode(mixed $value): bool

Ověří, zda je vstup platný UTF-8 string.

Validators::isUnicode('nette'); // true
Validators::isUnicode(''); // true
Validators::isUnicode(1); // false

isNone(mixed $value): bool

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(mixed $value): bool

Ověří, zda je vstup neasociativní pole.

Validators::isList(['foo', 'bar']); // true
Validators::isList(['foo' => 'Bar']); // false

isInRange(mixed $value, array $range): bool

Ověří, zda je vstup v daném rozsahu.

Validators::isInRange(5, [0, 5]); // true
Validators::isInRange(23, [null, 5]); // false
Validators::isInRange(23, [5]); // true
Validators::isInRange(1, [5]); // false

isEmail(mixed $value): bool

Ověří, zda je vstup platná e-mailová adresa.

Validators::isEmail('example@nette.org'); // true
Validators::isEmail('nette'); // false

isUrl(mixed $value): bool

Ověří, zda je vstup platná URL adresa.

Validators::isUrl('https://nette.org'); // true
Validators::isUrl('nette'); // false