harryosmar / plugin-validation
该软件包最新版本(v2.2.3)没有提供许可证信息。
PHP Composer 验证插件
v2.2.3
2018-03-08 10:55 UTC
Requires
- php: >=7.0
- giggsey/libphonenumber-for-php: ^8.8
- zendframework/zend-diactoros: ^1.7
Requires (Dev)
- fzaninotto/faker: ~1.4
- mockery/mockery: 0.9.*
- phpunit/phpunit: ~5.7
README
用于验证的 Composer 插件,包含一系列验证规则。
功能
validation > fields > rules
安装
添加以下 composer.json 文件
{
"require": {
"harryosmar/plugin-validation": "^2.2"
}
}
然后运行
$ composer install
或者输入
composer require harryosmar/plugin-validation
在 composer.json 根目录下
如何使用
- 1. 初始化
- 2. 将
fields添加到$validation对象 - 3. 调用
$validation对象的run方法 - 4. 如果
$status是false,获取错误信息 - 带有
break验证链的验证选项
1. 初始化
<?php use PluginSimpleValidate\Validation; use PluginSimpleValidate\Field; use PluginSimpleValidate\Libraries\Language; $language = new Language('en'); $validation = new Validation($this->language); $emailField = (new Field('email', ''))->required()->validEmail(); $passwordField = (new Field('password', ''))->required()->isAlphaOrNumeric()->lengthGreaterThan(5); // add chain of rules to the `field`
2. 将 fields 添加到 $validation 对象
<?php /** * @var \PluginSimpleValidate\Validation $validation * @var \PluginSimpleValidate\Field $emailField * @var \PluginSimpleValidate\Field $passwordField */ $validation->addField($emailField)->addField($passwordField); // add chain of fields to `$validation` object
3. 调用 $validation 对象的 run 方法
<?php /** @var \PluginSimpleValidate\Validation $validation */ $status = $validation->run();
4. 如果 $status 是 false,获取错误信息
<?php /** * @var \PluginSimpleValidate\Validation $validation * @var bool $status */ if (!$status) { $errors = $validation->getErrors(); // return array of errors message }
$erros 值
<?php [ 'email' => [ 'field is required', 'field must be a valid email address' ], 'password' => [ 'field is required', 'field may only letters and numbers', 'field length must be greater than 5' ], ];
带有 break 验证链的验证
如果某个 field 出现错误,您可以 break 验证链。在 步骤 3 中,当调用 $validation 对象的 run 方法时,添加参数 true 以启用 当发生错误时断开链
<?php /** * @var \PluginSimpleValidate\Validation $validation * @var bool $status */ $status = $validation->run(true); if (!$status) { $errors = $validation->getErrors(); // return array of errors message }
然后 $erros 值将是
<?php [ 'email' => [ 'field is required', 'field must be a valid email address' ] ];
2 种验证类型
验证
查看 示例代码
表单验证
<?php use PluginSimpleValidate\FormValidation; /** @var \PluginSimpleValidate\Libraries\Language $language */ $validation = new FormValidation($language); /** * sample of request body * [ 'email' => 'abc', 'grant_type' => '', 'client_id' => '', 'client_secret' => '', 'redirect_uri' => '', 'username' => '', 'password' => '', 'scope' => '', ] */ $validation->createFromPost( \Zend\Diactoros\ServerRequestFactory::fromGlobals(), [ 'email' => 'required,validEmail', 'grant_type' => 'required', 'client_id' => 'required,isNumber', 'client_secret' => 'required,isAlphaOrNumeric', 'redirect_uri' => 'required', 'username' => 'required,lengthBetweenOrEqual:5:10', 'password' => 'required,lengthGreaterThan:5', 'scope' => 'required', ] ); $validation->run(); if (!$validation->getStatus()) { $errors = $validation->getErrors(); }
$erros 将是
<?php [ 'email' => [ 'field must be a valid email address', ], 'grant_type' => [ 'field is required', ], 'client_id' => [ 'field is required', 'field must be a number', ], 'client_secret' => [ 'field is required', 'field may only letters and numbers', ], 'redirect_uri' => [ 'field is required', ], 'username' => [ 'field is required', 'field length must be greater or equal than 5 or less or equal than 10', ], 'password' => [ 'field is required', 'field length must be greater than 5', ], 'scope' => [ 'field is required', ], ];
字段
有 2 种类型的 field 可用
- 单值
PluginSimpleValidate\Field字段
<?php use PluginSimpleValidate\Field; use PluginSimpleValidate\Validation; $firstNameField = (new Field('firstname', ''))->required()->lengthGreaterOrEqualThan(4); $lastNameField = (new Field('lastname', ''))->required()->lengthGreaterOrEqualThan(4); $fullNameField = (new Field( 'fullname', $firstNameField->getValue() . ' ' . $lastNameField->getValue() ))->lengthGreaterOrEqualThan(10); /** @var Validation $validation */ $validation->addField($firstNameField)->addField($lastNameField)->addField($fullNameField); if (!$validation->run()) { $errors = $validation->getErrors(); }
$errors 将是
<?php [ [ 'firstname' => [ 'field is required', 'field length must be greater or equal than 4', ], 'lastname' => [ 'field is required', 'field length must be greater or equal than 4', ], 'fullname' => [ 'field length must be greater or equal than 10', ], ] ];
- 多值
PluginSimpleValidate\MultiValues\Field字段
<?php use PluginSimpleValidate\MultiValues\Field; use PluginSimpleValidate\Validation; $firstName = ''; $lastName = ''; /** @var Validation $validation */ $validation->addField((new Field('name')) ->isTrue($firstName !== '', 'first name required')->isTrue(strlen($firstName) >= 4, 'first name length must be at least 4') ->isTrue($lastName !== '', 'last name required')->isTrue(strlen($lastName) >= 4, 'last name length must be at least 4') ->isTrue(strlen($firstName . ' ' . $lastName) >= 10, 'full name length must be at least 10')); if (!$validation->run()) { $errors = $validation->getErrors(); }
$errors 将是
<?php [ 'name' => [ 'first name required', 'first name length must be at least 4', 'last name required', 'last name length must be at least 4', 'full name length must be at least 10', ] ];
可用规则
- 必填
- 数字
- 电子邮件
- 字母
- 字母或数字
- 十进制数
- 自然数
- 非零自然数
- 等于
- 小于
- 大于
- 小于等于
- 大于等于
- 在...之间
- 在...之间或等于
- 长度
- 长度小于
- 长度大于
- 长度小于等于
- 长度大于等于
- 长度在...之间
- 长度在...之间或等于
- 用于
custom rule logic的is true - 有效电话
必填
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->required();
数字
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->isNumber();
电子邮件
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->validEmail();
字母
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->isAlpha();
字母或数字
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->isAlphaOrNumeric();
十进制数
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->isDecimal();
自然数
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->isNatural();
非零自然数
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->isNaturalNoZero();
等于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->equal('old password');
小于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->lessThan(5);
大于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->greaterThan(5);
小于等于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->lessOrEqualThan(5);
大于等于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->greaterOrEqualThan(5);
在...之间
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->between(5, 10);
在...之间或等于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->betweenOrEqual(5, 10);
长度
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->length(5);
长度小于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->lengthLessThan(5);
长度大于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->lengthGreaterThan(5);
长度小于等于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->lengthLessOrEqualThan(5);
长度大于等于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->lengthGreaterOrEqualThan(5);
长度在...之间
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->lengthBetween(5, 10);
长度在...之间或等于
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->lengthBetweenOrEqual(5, 10);
用于 custom rule logic 的 is true
<?php $field = new \PluginSimpleValidate\Field('field', someMethod()); $field->isTrue('this is for error message'); function someMethod() : bool { // add logic here return true; }
有效电话
<?php /** * @var \PluginSimpleValidate\Field $field */ $field->isValidPhone('ID'); // `ID` is region code for `indonesia` country
自定义翻译
如果您想使用自己的翻译,在实例化 Language 类时提供参数 $translation 数组
<?php use PluginSimpleValidate\Libraries\Language; /** * @var array $translationArray * $translationArray must have the same format with https://github.com/harryosmar/plugin-validation/blob/master/src/lang/en.php */ $language = new Language('pl', $translationArray);
提交错误和功能请求
Harry Osmar Sitohang - harryosmarsitohang@gmail.com - https://github.com/harryosmar
还可以查看参与此项目的 贡献者列表。
