azi / validator
2.0
2015-08-16 18:14 UTC
Requires
- php: >=5.4
Requires (Dev)
- phpunit/phpunit: ~4.5
This package is auto-updated.
Last update: 2022-02-01 12:45:52 UTC
README
PHP 服务器端表单验证
这是一个小型 PHP 包,用于简化在项目中验证表单,尤其是大型表单。
安装指南
您可以通过 GitHub 下载包或使用 composer 安装 Validator。我鼓励您使用后者。
{ "require": { "azi/validator": "2.*" } }
## 开始使用
- require composer autoloader
require 'vendor/autoload.php';
- 实例化 Validator 类
use azi\Validator; $v = new Validator();
- 为每个表单字段定义规则
$rules = array( 'name' => 'alpha|required', 'age' => 'num|required', );
- 运行 validator
$v->validate( $_POST, $rules );
- 检查 validator 是否有错误,如果验证失败则将用户重定向回表单
if ( !$v->passed() ) { $v->goBackWithErrors(); }
- 向用户显示验证错误
<label>Name : <input type="text" name="name"> </label> <?= Validator::error('name'); ?>
您可以使用自定义 HTML 标记包裹错误消息
Validator::error('confirm_password', '<span class="error">:message</span>');
规则
- required
- num
- alpha
- alnum
- ip
- url
- min:number
- max:number
- same:field_name
自定义表达式和消息
- 自定义表达式
您可以在运行 validator 之前注册自定义 RegExp
$v->registerExpression( 'cnic', '#^([0-9]{13})$#', 'Invalid CNIC number' );
registerExpression 方法需要三个参数
- expressionID - 表达式的唯一名称
- pattern - RegExp 字符串
- message [可选] - 如果验证失败则返回的错误消息
Validator::registerExpression($expressionID , $pattern, $message)
- 自定义消息
您还可以为每个规则传递自定义错误消息
$rules['full_name'] = "required--Please Enter your name";
注册自定义规则
这个周末(2015年8月15日)我正在为 validator 开发一个必备功能,即运行时接受自定义规则。以下是您现在如何做到这一点的方法。
$validator = new azi\validator(); $validator->addRule('isUnique', function($field, $value){ $query = mysqli_query("SELECT * FROM users WHERE username = $value"); if($query->affected_rows > 0) { return "Username '$value' already exists please try something else"; } return true; );
现在您可以使用这个新注册的规则了。
$validator->validate( $_POST, ['username' => 'isUnique|required'] );
现在您对字段验证有了如此大的控制权,可以在您传递给 Validator::addRule()
的第二个参数的闭包中做任何想做的事情。
条件规则
您可以为字段指定条件规则
$rules['age'] = 'if:gender[Male](required|min:2|num)';
比较规则
您还可以比较一个字段与另一个字段
$rules['password'] = 'required|min:8'; $rules['confirm_password'] = 'same:password';