Laravel 如何在没有请求的情况下进行验证
How to validate without request in Laravel
我需要验证数组但没有请求。
在 laravel 文档验证中是这样描述的:
$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'
]);
应该是。因为 $request->all()
将所有输入数据保存为数组。
$input = [
'title' => 'testTitle',
'body' => 'text'
];
$input is your customs array.
$validator = Validator::make($input, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
您可以像这样创建请求对象来实现:
$request = new Request([
'id' => 1,
'body' => 'text'
]);
$this->validate($request, [
'id' => 'required',
'body' => 'required'
]);
因此您将获得请求的所有功能class
Validator::make 需要数组而不是请求对象。
您可以传递任何数组并在其上实施规则。
Validator::make(['name' => 'Tom'], ['name' => 'required', 'id' => 'required']);
并且它将验证数组。所以 $request 对象不是必需的。
您还可以将数据与请求对象合并:
$data = ['id' => 1];
$request->merge($data);
然后照常验证。
$request->all()
是数组而不是请求对象。
此代码将起作用:
$data = [
'id' => 1,
'body' => 'text'
];
$validator = Validator::make($data, [
'id' => 'required',
'body' => 'required',
]);
我需要验证数组但没有请求。 在 laravel 文档验证中是这样描述的:
$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'
]);
应该是。因为 $request->all()
将所有输入数据保存为数组。
$input = [
'title' => 'testTitle',
'body' => 'text'
];
$input is your customs array.
$validator = Validator::make($input, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
您可以像这样创建请求对象来实现:
$request = new Request([
'id' => 1,
'body' => 'text'
]);
$this->validate($request, [
'id' => 'required',
'body' => 'required'
]);
因此您将获得请求的所有功能class
Validator::make 需要数组而不是请求对象。 您可以传递任何数组并在其上实施规则。
Validator::make(['name' => 'Tom'], ['name' => 'required', 'id' => 'required']);
并且它将验证数组。所以 $request 对象不是必需的。
您还可以将数据与请求对象合并:
$data = ['id' => 1];
$request->merge($data);
然后照常验证。
$request->all()
是数组而不是请求对象。
此代码将起作用:
$data = [
'id' => 1,
'body' => 'text'
];
$validator = Validator::make($data, [
'id' => 'required',
'body' => 'required',
]);