数据库 - Model 前置说明
官方开源项目 抓取代理IP

验证场景仅针对自定义规则验证器有效,独立验证不存在验证场景的概念

介绍

验证器支持定义场景,并且验证不同场景的数据,主要配合\x\Validate()->scene()方法选择对应场景使用。

自定义Validate规则类,通过scene属性定义场景列表。

提示:所有自定义的Validate规则类,都需要继承\x\Validate基类。

定义场景

自定义规则类,官方建议,统一存放在/box/validate/目录下:

namespace box\validate;
use x\Validate;

class User extends Validate
{
    // 定义字段对应的规则
    protected $rule = [
        'id' => 'require|int',
        'name'  =>  'require|username|between:1,120',
        'age' =>  'between:1,100',
        'email' =>  'email',
        'info.nick' =>  'alphaNum|min:10|max:20',
    ];
    // 自定义错误值声明
    protected $message  =   [
        'id.require'   => '{id}忘记输入啦', 
        'name.username'     => '{name}不规范', 
        'info.nick.min' => '{:preset}不能小于{0}',
    ];
    // 场景定义
    protected $scene = [
        // 修改时使用的场景(简写)
        'edit'  =>  ['id','name','age','email','info.nick'], // 需要校验的字段
        // 新增时使用的场景(精致)
        'create'  =>  [
            'field' => ['name','age','email','info.nick'], // 需要校验的字段
            'filter' => ['email'], // 移除校验的字段
            'add_rule' => [ // 追加校验规则
                'age'  =>  'require|number',
            ],
            'delete_rule' => [ // 删除校验规则
                'name'  =>  'require|between',
            ],
        ],
    ];
}

然后就可以在验证方法中制定验证的场景:

$ValiUser = new \box\validate\User();
// $data为验证数据集
if ($ValiUser->scene('edit')->fails($data)) {
    // 打印失败原因
    var_dump($Validate->errors());
}

注意:场景(简写)的情况下,只用于声明,需要使用的字段规则。正常情况下,建议使用场景(精致)的写法。

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录