如何在没有请求的情况下验证Laravel

时间:2018-04-14 01:41:11

标签: php laravel laravel-5.6

我需要验证一个数组但没有请求。 在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'
]);

5 个答案:

答案 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',
]);