use Validator;
//...
$v = new Validator();
$_POST_DATA = $_POST; //要验证的数据
$rules = [
'name' => 'required;alpha_num_dash;'
]; //这是对各字段要验证的规则
$messages = []; //这是要输出的消息,默认是使用语言文件中的消息。
$areValid = $v->validate( $_POST_DATA ,$rules, $messages);
var_dump( $areValid );
print_r( $v->errors );
要求输入,不能为空。
唯一,不能重复。
unique:users,username
表示在w_users表的username中不能存在有重复的。
unique:users,username,21,id;
除了id=21
之外不能有重复。
只可以输入字母、数字、中划线、下划线。
email:true;
表示要求输入email,false不要求。不写代表不要求。
文字长度的区间
rangelength:3,30
表示长度在 3-30个字符之间。
equalTo:password;
表示当前文本域的值要和文本域名称为'password'的值一致。验证再次输入的密码。
最小长度
minlength:5;
最少要有五个字符。
maxlength:6
最多为6个字符
要求输入数字,没有小数点。例如digits:true;
要求输入数字,可以有小数点。
最小值。
min:18;
表示,值不能小于18。
最大值
max:65
表示值不能大于65。
区间
range:1,12
表示值保能大于等于1,小于等于12。
表示不能要html、xml标记。
消息可以采用文本域名称+规则名称作为消息的下标。
<?php
$messages = [
'login.required'=>'please enter login.',
];
也可以只用规则名称。
<?php
$messages = [
'required' => 'please enter this field.',
];
<?php
$messages = [
'required' => 'please enter this field.',
'login.required'=>'please enter login.',
'login.email'=>'must be an email. ',
'login.unique' => 'username should be unique',
'login.rangelength' => 'username length 4-30',
'confirm_password.required' => 'please enter confirm_password',
'confirm_password.equalTo' => 'confirm_password should be same as password',
'confirm_password.minlength' => 'please enter at lease 5 chars',
'confirm_password.maxlength' => 'please enter less than 6 chars',
'tel.digits' => 'please enter a valid telphone number',
'score.number' => 'please enter a vlaid score',
'age.min' => 'age must greater than 18',
'age.max' => 'age must less than 65',
'month.range' => 'month should be in 1-12',
];
use Validator;
//...
$v = new Validator();
$_POST_DATA = $_POST; //要验证的数据
$rules = [
'name' => 'required;alpha_num_dash;'
]; //这是对各字段要验证的规则
$messages = []; //这是要输出的消息,默认是使用语言文件中的消息。
$attributes = ['email'=> '电子邮件'];
$areValid = $v->validate( $_POST_DATA ,$rules, $messages ,$attributes);
var_dump( $areValid );
print_r( $v->errors );
当$attributes
的值为空时,且没有写上Lang::groupAppend('fieldlabels','validator_test')
这样的代码,系统值会根据控制器名称寻找对应的语言文件。
例如控制器名称是UserController
,系统便会查找resources/lang/{local}/user.php
、resources/lang/{local}/users.php
中定义的字段名称。
如果没有找到,则会查找/resources/lang/{local}/validation.php
文件中名称为attributes
中定义的标签。
字段名称默认被传给语言。当然你也可以已经写好的字段对应语言关系。
<?php
Lang::groupAppend('fieldlabels','validator_test');
这里是把validator_test.php语言文件的值追加到fieldlabels组中。 看一下validator_test.php的语言文件内容。
<?php
return [
'login' => '用户名',
'tel' => '电话号码',
'email' => '电子邮件',
'confirm_password' => '确认密码',
'password' => '密码'
];