Готовые валидаторы полей
AmountField
Evas\Validate\Fields\AmountField.
Валидация пропускает денежную сумму вида: 1.00, 1999.99, 0.00, '1.00', '99.99'
/**
* Валидатор поля денежная сумма.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class AmountField extends Field
{
public $type = ['string', 'float'];
public $pattern = '/^\d+\.\d{2}$/';
}
DateField
Evas\Validate\Fields\DataField.
Валидация пропускает строку даты вида: '2020-02-02'
/**
* Валидатор поля дата.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class DateField extends Field
{
public $pattern = '/^\d{4}-\d{2}-\d{2}$/';
}
EmailField
Evas\Validate\Fields\EmailField.
Валидация пропускает строку email вида: 'test@test.com'
/**
* Валидатор поля email.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class EmailField extends Field
{
public $label = 'Email';
public $min = 8;
public $max = 60;
public $pattern = '/^.{2,}@.{2,}\..{2,}$/';
}
FloatField
Evas\Validate\Fields\FloatField.
Валидация пропускает строку или число вида: 22.22, 22., '0.11'
/**
* Валидатор поля число float.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class FloatField extends Field
{
public $type = ['string', 'float'];
public $pattern = '/^\d+\.?\d*$/';
}
FullNameField
Evas\Validate\Fields\FullNameField.
Валидация пропускает полное или частичное имя вида: 'Иван', 'Иван Иванов', 'John', 'John Doe'
/**
* Валидатор полного имени.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class FullNameField extends Field
{
public $min = 2;
public $max = 60;
public $pattern = '/^([a-zA-Zа-яёЁА-Я]{2,} ?)+$/u';
}
IdField
Evas\Validate\Fields\IdField.
Валидация пропускает число или строку id вида: 1, 10123, 20
/**
* Валидатор поля id.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class IdField extends Field
{
public $pattern = '/^[1-9]+\d*$/';
}
IntField
Evas\Validate\Fields\IntField.
Валидация пропускает число или строку состоящую из цифр: 0, 1, '22', 74, '90684317542'
/**
* Валидатор поля число int.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class IntField extends Field
{
public $pattern = '/^\d+$/';
}
JsonEnumField
Evas\Validate\Fields\JsonEnumField.
Валидация пропускает перечисления в json вида: [1, 2, 3]
/**
* Валидатор перечисления значений в json.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class JsonEnumField extends Field
{
public $pattern = '/^\[(\d+,)*(\d+)\]$/';
/**
* Хук после валидации поля.
*/
protected function afterValidate()
{
$this->value = json_decode($this->value, true);
}
}
LoginField
Evas\Validate\Fields\LoginField.
Валидация пропускает логин вида: 'test', 'hi_John.Doe-123'
/**
* Валидатор логина.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class LoginField extends Field
{
public $min = 4;
public $max = 20;
public $pattern = '/^[a-zA-Z0-9_.-]+$/';
}
NameField
Evas\Validate\Fields\NameField.
Валидация пропускает имя вида: 'Иван', 'John'
/**
* Валидатор имени.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class NameField extends Field
{
public $min = 2;
public $max = 30;
public $pattern = '/^[a-zA-Zа-яёЁА-Я]+$/u';
}
NumberField
Evas\Validate\Fields\NumberField.
Валидация пропускает число вида: 42, 123.45, 0.778, '568', '99.71'
/**
* Валидатор поля число.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class NumberField extends Field
{
public $type = ['string', 'numeric'];
public $pattern = '/^\d+\.?\d*$/';
}
PhoneField
Evas\Validate\Fields\PhoneField.
Валидация пропускает номер телефона длиной от 10 до 16 цифр: 1234567890, 01234567890, 00001234567890
Из значения перед валидацией убираются все символы не являющиеся цифрами.
Поэтому валидация пропускает ещё и: '123-456-78-90', '+0 (123) 456-78-90', '000012_3-4ABC 56- .Hello-_ .78-9 0'
Однако, значение после валидации, доступное в $value, будет состоять только из цифр.
/**
* Валидатор телефона.
* @package evas-php/evas-validate
* @author Egor Vasyakin <egor@evas-php.com>
*/
namespace Evas\Validate\Fields;
use Evas\Validate\Field;
class PhoneField extends Field
{
public $min = 10;
public $max = 16;
public $pattern = '/(\d*)(\d{10})$/';
/**
* Подготовка значения к валидации.
* @param mixed|null значение
* @return mixed|null подготовленное значение
*/
protected function prepareValue($value)
{
$pattern = '/\d/';
preg_match_all($pattern, $value, $matches);
return implode('', $matches[0]);
}
}