配列を検証する必要がありますが、リクエストはありません。 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'
]);
これは、次のようにリクエストオブジェクトを作成することで実現できます。
$request = new Request([
'id' => 1,
'body' => 'text'
]);
$this->validate($request, [
'id' => 'required',
'body' => 'required'
]);
したがって、Requestクラスのすべての機能を利用できます。
あるべきです。 $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->all()
は配列でありリクエストオブジェクトではありません。このコードは機能します:
$data = [
'id' => 1,
'body' => 'text'
];
$validator = Validator::make($data, [
'id' => 'required',
'body' => 'required',
]);
Validator :: makeは、リクエストオブジェクトではなく配列を期待します。任意の配列を渡すことができ、その配列にルールを実装します。
Validator::make(['name' => 'Tom'], ['name' => 'required', 'id' => 'required']);
そして、アレイを検証します。したがって、$ requestオブジェクトは必要ありません。
データをリクエストオブジェクトとマージすることもできます。
$data = ['id' => 1];
$request->merge($data);
次に、通常どおりに検証します。