需求:验证数组及其数组里的所有元素
本例验证说明:
需求:传递参数内容不为空,参数类型为数组,数组最大4个元素
自定义规则:数组的元素最长1个长度,元素范围为大写A-D
代码参考
控制器层:
$validate = validate('Curriculum');
if (!$validate->scene('get_classify_course')->check($data)) {
$this->error($validate->getError());
}
验证器层:
<?php
namespace app\admin\validate;
use think\validate;
class Curriculum extends Validate {
protected $rule = [
'course_classify' => 'require|array|max:4|checkClassify:输入规则错误!',
];
//暂时不需要
protected $message = [
//可以将错误信息写入这里看起来比较简洁
//例如
'course_classify'=>'输入规则错误!',
];
protected $scene = [
'get_classify_course' => ['course_classify'],
];
protected function checkClassify($value, $rule, $data) {
// 方法一,手动
// $classify_rules = array('A', 'B', 'C', 'D');
// foreach ($value as $k => $v) {
// if (!in_array($v, $classify_rules)) {
// return $rule;
// }
// }
// return true;
//方法二,正则表达式
foreach ($value as $k => $v) {
if (!preg_match('/^[A-D]{1}+$/', $v)) {
return $rule;
}
}
return true;
}
}
分享:
正则表达式大全:https://www.cnblogs.com/fozero/p/7868687.html
TP5内置验证规则:https://www.cnblogs.com/pcx105/p/7735224.html
TP5手册——自定义验证规则:https://www.kancloud.cn/manual/thinkphp5/129320