use*_*266 3 php laravel laravel-5.6
我需要验证一个数组但没有请求。在laravel docs中,验证的描述如下:
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
Run Code Online (Sandbox Code Playgroud)
但是我不能使用$ request,因为数据来自外部api,并且验证不在控制器内部。如何验证此数组?例如:
$validatedData = validate([
'id' => 1,
'body' => 'text'
], [
'id' => 'required',
'body' => 'required'
]);
Run Code Online (Sandbox Code Playgroud)
Ari*_*ito 12
应该。因为$request->all()将所有输入数据保存为一个数组。
$input = [
'title' => 'testTitle',
'body' => 'text'
];
$input is your customs array.
$validator = Validator::make($input, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
Run Code Online (Sandbox Code Playgroud)
Validator::make 需要数组而不是请求对象。您可以传递任何数组并在其上实现规则。
Validator::make(['name' => 'Tom'], ['name' => 'required', 'id' => 'required']);
Run Code Online (Sandbox Code Playgroud)
它将验证数组。所以 $request 对象不是必需的。
您可以通过创建请求对象来实现此目的,如下所示:
$request = new Request([
'id' => 1,
'body' => 'text'
]);
$this->validate($request, [
'id' => 'required',
'body' => 'required'
]);
Run Code Online (Sandbox Code Playgroud)
因此,您将获得Request类的所有功能