如何在Laravel中未经请求进行验证

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)


Muh*_*man 9

Validator::make 需要数组而不是请求对象。您可以传递任何数组并在其上实现规则。

Validator::make(['name' => 'Tom'], ['name' => 'required', 'id' => 'required']);
Run Code Online (Sandbox Code Playgroud)

它将验证数组。所以 $request 对象不是必需的。


Amr*_*Aly 5

您可以通过创建请求对象来实现此目的,如下所示:

$request = new Request([
    'id' => 1,
    'body' => 'text'
]);

$this->validate($request, [
    'id' => 'required',
    'body' => 'required'
]);
Run Code Online (Sandbox Code Playgroud)

因此,您将获得Request类的所有功能