web-dev-qa-db-ja.com

Laravel)でリクエストなしで検証する方法

配列を検証する必要がありますが、リクエストはありません。 laravelドキュメントの検証は次のように説明されています:

$validator = Validator::make($request->all(), [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
]);

しかし、データは外部APIからのものであり、検証はコントローラー内にないため、$ requestを使用できません。このアレイを検証するにはどうすればよいですか?例えば:

$validatedData = validate([
    'id' => 1,
    'body' => 'text'
], [
    'id' => 'required',
    'body' => 'required'
]);
6
user3743266

これは、次のようにリクエストオブジェクトを作成することで実現できます。

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

$this->validate($request, [
    'id' => 'required',
    'body' => 'required'
]);

したがって、Requestクラスのすべての機能を利用できます。

5
Amr Aly

あるべきです。 $request->all()はすべての入力データを配列として保持するためです。

$input = [
    'title' => 'testTitle',
    'body' => 'text'
];


$input is your customs array.

$validator = Validator::make($input, [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
]);
4
grappler

$request->all()は配列でありリクエストオブジェクトではありません。このコードは機能します:

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

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

Validator :: makeは、リクエストオブジェクトではなく配列を期待します。任意の配列を渡すことができ、その配列にルールを実装します。

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

そして、アレイを検証します。したがって、$ requestオブジェクトは必要ありません。

1
Muhammad Nauman

データをリクエストオブジェクトとマージすることもできます。

$data = ['id' => 1];
$request->merge($data);

次に、通常どおりに検証します。

0
omarjebari