laravel 通过Validator::make验证后,如何拿到验证后的值
在 Laravel 中,通过 Validator::make
创建的验证器实例验证数据后,可以通过以下方式获取验证后的值:
-
使用
validate()
方法
调用验证器实例的validate()
方法,会返回经过验证的数据数组。如果验证失败,该方法会抛出ValidationException
异常,因此需结合passes()
或fails()
使用:$validator = Validator::make($input, $rules); if ($validator->passes()) {$validatedData = $validator->validate(); // 获取验证后的数据 }
这是获取验证后数据的核心方法 。
-
结合表单请求的
safe()
和collect()
如果使用表单请求(Form Request)进行验证,可以通过safe()
方法获取安全数据,并调用collect()
转换为集合实例:$collection = $request->safe()->collect(); // 表单请求验证后获取数据
此方式适用于通过表单请求触发的验证场景 。
-
手动过滤输入数据
若需自定义逻辑,可直接从原始输入中提取已验证的字段:$validatedData = array_filter($input, function($key) use ($rules) {return array_key_exists($key, $rules); }, ARRAY_FILTER_USE_KEY);
但此方法需确保规则与字段严格对应,推荐优先使用内置方法 。
注意事项:
validate()
方法会自动排除未通过验证的字段,仅保留符合规则的数据 。- 使用
safe()
时,若验证失败,安全数据会被重置为空,因此需确保验证通过后再调用 。