Validator
с версии 0.4.0
с версии 0.5.0 добавлена поддержка методаarrayInput($callback)
c версии 1.0.0 переименованы правилаString
вStringInput
,Float
вFloatInput
с версии 7.7.0 изменён синтаксисValidatorBuilder
, и переименован вValidatorForm
, добавленValidatorChain
с версии 7.7.4 изменено поведение при вызове валидаторов черезValidator::__staticCall
, теперь возвращаетсяValidatorChain
Пакет Validator предназначен для проверки входных данных. Пакет разработан с использование исходного кода проекта https://github.com/Respect/Validation, к сожалению, не получилось адаптировать данный пакет для использования его AS IS.
Глобальных настроек нет
Подключение класса Validator
:
use \Bluz\Validator\Validator;
Простой пример использования валидатора:
if (!Validator::string()->validate(123)) {
echo "It must be a string";
}
Используя альтернативный синтаксис с вызовом __invoke()
:
if (!Validator::string()(123)) {
echo "It must be a string";
}
if (!Validator::string()->length(5, 10)->validate('foo bar')) {
echo "String must have a length between 5 and 10";
}
$validator = Validator::string()->length(25, 40);
if (!$validator->validate('foo bar')) {
echo "String must have a length between 25 and 40\n";
}
if (!$validator->validate('baz qux')) {
echo "String must have a length between 25 and 40\n";
}
Альтернативный вариант с использованием __invoke()
:
$numberValidator = Validator::integer()->min(25)->max(40);
if (!$numberValidator(5)) {
echo "Number should be integer between 25 and 40\n";
}
if (!$numberValidator(42)) {
echo "Number should be integer between 25 and 40\n";
}
Получение описания правил для проверки:
$validator = Validator::string()->length(25, 40);
echo $validator;
// >> must be a string
// >> must have a length between 25 and 40
Замена описания для всей цепочки вызовов:
$validator = Validator::string()->length(25, 40)->setDescription('description');
echo $validator;
// >> description
Получение текста ошибки цепочки:
$validator = Validator::string()->length(25, 40);
if (!$validator->validate('foo bar')) {
echo $validator->getError();
}
Установка произвольного текста ошибки для regexp
и callback
правил:
// method Validator::create return new instance of ValidatorChain
$validator = Validator::create()->
->regexp('/[a-z]/', 'Password must contain lowercase letters')
->regexp('/[A-Z]/', 'Password must contain uppercase letters')
->regexp('/[0-9]/', 'Password must contain numbers ')
echo $validator;
// >> Password must contain lowercase letters
// >> Password must contain uppercase letters
// >> Password must contain numbers
if (!$validator->validate('123456')) {
echo $validator->getError();
}
Для проверки ассоциативного массива следует использовать ValidatorForm
:
$validator = new ValidatorForm();
// title validator
$validator->add('title')
->required()
->string()
->notEmpty();
// alias validator
$validator->add('alias')
->required()
->string()
->notEmpty()
->regexp('/^[a-zA-Z0-9_\.\-]+$/i', 'Alias should contains only Latin characters, dots and dashes')
->callback(
function($input) use ($data) {
if ($row = $this->getTable()->findRowWhere(['alias' => $input])) {
if ($row->id != $data['id']) {
return false;
}
}
return true;
},
'Alias already exists'
);
if (!$validator->validate($data)) {
$validator->getErrors();
}
-
alpha($additionalCharacters = '')
- проверка на буквы алфавита, внутри используетсяctype_alpha
, с соответствующей зависимостью от установленной локали дляLC_CTYPE
, разрешает пробельные символы -
alphaNumeric($additionalCharacters = '')
- проверка на буквы алфавита и цифры, внутри используетсяctype_alnum
, разрешает пробельные символы -
array($callback)
- проверка массива любой callable структурой (это может быть как встроенная функция, так и другое правило из данного пакета) -
between($min, $max, $inclusive = false)
- проверка на вхождение в диапазон -
callback($callback, $description = '')
- проверка с использованием функции обратного вызова, поддерживается всеcallable
структуры -
condition($condition)
- для проверки используется произвольное условие -
contains($containsValue)
- содержит заданный элемент -
containsStrict($containsValue)
- содержит заданный элемент -
countryCode()
- проверка на ISO 3166-1 alpha-2 -
creditCard()
- проверка номера кредитной карточки алгоритмом Луна -
date($format)
- проверка даты на соответствие заданному формату -
domain($checkDns = false)
- проверка доменного имени -
email($checkDns = false)
- проверка email -
equals($compareTo, $identical = false)
- сравнение с заданным значением -
float()
- число с плавающей запятой -
in($haystack)
- вхождение в заданный массив данных - массив или строку -
inStrict($haystack)
- вхождение в заданный массив данных - массив или строку -
integer()
- целое число -
ip($options = null)
- проверка IP адреса, можно задать диапазон для проверки -
json()
- строка с JSON -
latin($additionalCharacters = '')
- проверка на буквы латинского алфавита, запрещает пробельные символы -
latinNumeric($additionalCharacters = '')
- проверка на буквы латинского алфавита и цифры, запрещает пробельные символы -
length($min = null, $max = null, $inclusive = true)
- проверка длины строки или массива -
less($maxValue)
- проверка максимального значения -
lessOrEqual($maxValue)
- проверка максимального значения -
more($minValue)
- проверка минимального значения -
moreOrEqual($minValue)
- проверка минимального значения -
notEmpty()
- не пустое значение, обёртка надempty()
-
noWhitespace()
- без пробелов -
numeric()
- число -
required()
- обязательное поле, отсеивает поisset()
, и сравнению сnull
,false
и пустой строкой -
regexp($expression, $description = '')
- проверка по регулярному выражению -
string()
- строка
Для подключения новых правил валидации следует вызвать статический метод Validator::addRuleNamespace($namespace)
и добавить неймспейс с вашими правилами, правила подключаться автоматически:
use Bluz\Validator\Validator;
Validator::addRuleNamespace('\\MyNameSpace\\Rule\\');
// your class \MyNameSpace\Rule\MyCustomRule
// should load by composer autoloader
Validator::myCustom()->validate($input);
Acl
Application
Auth
Cache
Common
— Exception
— Collection
— Container
— Helper
— Options
— Singleton
Config
Controller
— Data
— Mapper
—— Crud
—— Rest
— Reflection
Crud
— Crud Table
Db
— Row
— Table
— Relations
— Query
Debug
EventManager
Grid
Http
Layout
Logger
Mailer
Messages
Nil
Proxy
Registry
Request
Response
Router
Session
Translator
Validator
View