tp5.0验证

  • 使用的是\think\Validate
  • 可以在两个地方定义(控制器和模型)

控制器操作:

文件\think\Validate.php的构造函数

/**
 * 架构函数
 * @access public
 * @param  array $rules 验证规则
 * @param  array $message 验证提示信息
 * @param  array $field 验证字段描述信息
 */
//三个参数都允许为空
public function __construct(array $rules = [], array $message = [], array $field = [])
{
    $this->rule    = array_merge($this->rule, $rules);
    $this->message = array_merge($this->message, $message);
    $this->field   = array_merge($this->field, $field);
}

使用案例:

//定义验证规则
$rule = [
    'name'  => 'require|max:25',
    'age'   => 'number|between:1,120',
    'email' => 'email',
];

//定义验证提示信息
$msg = [
    'name.require' => '名称必须',
    'name.max'     => '名称最多不能超过25个字符',
    'age.number'   => '年龄必须是数字',
    'age.between'  => '年龄只能在1-120之间',
    'email'        => '邮箱格式错误',
];

//定义验证字段描述信息
$field = [
    'name'  => '名称',
    'age'   => '年龄',
    'email' => '邮箱',    
];

//定义要验证信息
$data = [
    'name'  => 'thinkphp',
    'age'   => 10,
    'email' => 'thinkphp@qq.com',
];

//实例化对象和验证数据
$validate = new Validate($rule,$msg,$field);
//定义场景(该场景定义只需要验证name和age字段),然后再需要验证的地方直接使用 scene 方法验证
$validate->scene('edit', ['name', 'age']);
$result = $validate->scene('edit')->check($data)

模型操作:

namespace app\index\validate;
use think\Validate;
class User extends Validate
{
    定义验证规则
    protected $rule = [
        'name'  =>  'require|max:25',
        'email' =>  'email',
    ];

    //定义字段描述信息
     protected $field = [
        'name'  => '名称',
        'email' => '邮箱'
    ];

    //定义错误提示信息
    protected $message = [
        'name.require'  =>  '用户名必须',
        'email' =>  '邮箱格式错误',
    ];

    //定义场景
    protected $scene = [
        'add'   =>  ['name','email'],
        'edit'  =>  ['email'],
    ];    
}

模型中调用:

$User = new User;
// 调用Member验证器类进行数据验证
$result = $User->validate('User.edit')->save($data);
if(false === $result){
    // 验证失败 输出错误信息
    dump($User->getError());
}

用内置的规则验证单个数据:

// 日期格式验证
Validate::dateFormat('2016-03-09','Y-m-d'); // true
// 验证是否有效的日期
Validate::is('2016-06-03','date'); // true
// 验证是否有效邮箱地址
Validate::is('thinkphp@qq.com','email'); // true
// 验证是否在某个范围
Validate::in('a',['a','b','c']); // true
// 验证是否大于某个值
Validate::gt(10,8); // true
// 正则验证
Validate::regex(100,'\d+'); // true

表单验证:

表单中的添加:

<input type="hidden" name="__token__" value="{$Request.token}" />

验证规则中添加token:

 protected $rule = [
        'name'  =>  'require|max:25|token',//添加token验证
        'email' =>  'email',
    ];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值