Skip to content

数据验证器 (Validator)

Anon Framework Next 提供了一个数据验证器,用于验证用户提交的数据(如表单提交或 API 请求)。

基础使用

你可以通过 Anon\Core\Facade\Validator 门面类创建一个验证器实例。

验证数据

以下是一个常见的用户注册验证示例:

php
use Anon\Core\Facade\Validator;
use Anon\Core\Http\Request;
use Anon\Core\Http\Response;

Route::post('/register', function (Request $request) {
    // 获取提交的数据
    $data = $request->post();
    
    // 创建验证器
    $validator = Validator::make($data, [
        'username' => 'required|max:20',
        'email'    => 'required|email',
        'age'      => 'numeric|min:18'
    ], [
        // 自定义错误提示(可选)
        'username.required' => '必须填写用户名',
        'username.max'      => '用户名长度不能超过20',
        'email.required'    => '必须填写邮箱',
        'email.email'       => '邮箱格式不合法',
        'age.numeric'       => '年龄必须是数字',
        'age.min'           => '未满18岁禁止访问'
    ]);

    // 检查是否验证失败
    if ($validator->fails()) {
        // 返回第一个错误信息
        return Response::error($validator->firstError(), 400, $validator->errors());
    }

    // 验证通过,继续处理业务逻辑...
    return Response::success($data, '注册成功');
});

可用验证规则

框架内置了以下常用验证规则:

规则说明示例
required字段不能为空(null、空字符串、空数组)required
email必须是一个合法的电子邮件地址email
max:value最大值。对于字符串是最大长度;对于数字是最大数值;对于数组是最大元素个数。max:255
min:value最小值。同上。min:6
numeric必须是数字或数字字符串numeric
integer必须是整数integer
in:foo,bar字段值必须在给定的列表中in:admin,user,guest

错误处理

验证失败后,你可以通过以下方法获取错误信息:

php
// 获取所有字段的所有错误信息数组
$errors = $validator->errors();

// 获取第一条错误信息(字符串),适合作为 API 的 errorMessage 返回
$first = $validator->firstError();