user3743266
user3743266

Reputation: 1172

How to validate without request in Laravel

I need to validate an array but without a request. In laravel docs validation is described like this:

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

But I can't use $request because the data comes from an external api and the validation is not inside a controller. How can I validate this array? For example:

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

Upvotes: 19

Views: 19756

Answers (5)

Ariel Pepito
Ariel Pepito

Reputation: 659

Should be. Because $request->all() hold all input data as an array .

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

$input is your custom array.

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

Upvotes: 19

Anas K
Anas K

Reputation: 61

$request->all() is array not request object. This code will work:

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

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

Upvotes: 4

omarjebari
omarjebari

Reputation: 5519

You can also merge data with the request object:

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

Then validate as per usual.

Upvotes: 0

Muhammad Nauman
Muhammad Nauman

Reputation: 1309

Validator::make expects array and not a request object. You can pass any array and implements the rules on it.

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

And it will validate the array. So $request object is not necessary.

Upvotes: 16

Amr Aly
Amr Aly

Reputation: 3905

You can achieve this by create request object like so:

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

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

and thus you will get all the functionality of the Request class

Upvotes: 10

Related Questions