Php 如何在Laravel中进行无请求验证

Php 如何在Laravel中进行无请求验证,php,laravel,laravel-5.6,Php,Laravel,Laravel 5.6,我需要在没有请求的情况下验证数组。 在laravel文档中,验证描述如下: $validator = Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); 但我不能使用$request,因为数据来自外部api,验证不在控制器内。如何验证此阵列?例如: $validatedData = validate([

我需要在没有请求的情况下验证数组。 在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'
]);

因此,您将获得请求类的所有功能,而不是请求对象。 您可以传递任何数组并在其上实现规则

Validator::make(['name' => 'Tom'], ['name' => 'required', 'id' => 'required']);

它将验证阵列。因此$request对象不是必需的。

您还可以将数据与request对象合并:

$data = ['id' => 1];
$request->merge($data);
然后按照常规进行验证。

$request->all()
不是请求对象。 此代码将在以下情况下工作:

$data = [
    'id' => 1,
    'body' => 'text'
];

$validator = Validator::make($data, [
    'id' => 'required',
    'body' => 'required',
]);

回答得好!很遗憾看到人们使用黑客来“修复”他们的代码。这应该是真正的答案您不需要请求对象来验证数组。