我需要验证一个数组但没有请求。 在laravel docs中,验证的描述如下:
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
但是我不能使用$ request,因为数据来自外部api并且验证不在控制器内。我该如何验证这个数组?例如:
$validatedData = validate([
'id' => 1,
'body' => 'text'
], [
'id' => 'required',
'body' => 'required'
]);
答案 0 :(得分:4)
您可以通过创建请求对象来实现此目的:
char
因此您将获得Request类的所有功能
答案 1 :(得分:3)
应该是。因为$request->all()
将所有输入数据保存为数组。
$input = [
'title' => 'testTitle',
'body' => 'text'
];
$input is your customs array.
$validator = Validator::make($input, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
答案 2 :(得分:0)
Validator :: make需要数组而不是请求对象。 您可以传递任何数组并在其上实现规则。
Validator::make(['name' => 'Tom'], ['name' => 'required', 'id' => 'required']);
它将验证数组。所以$ request对象不是必需的。
答案 3 :(得分:0)
您还可以将数据与请求对象合并:
$data = ['id' => 1];
$request->merge($data);
然后照常进行验证。
答案 4 :(得分:0)
$request->all()
是数组而非请求对象。
该代码将起作用:
$data = [
'id' => 1,
'body' => 'text'
];
$validator = Validator::make($data, [
'id' => 'required',
'body' => 'required',
]);