Reputation: 1069
I just want to ensure that my data, coming from a JS side, is an array. So from the accepted answer it is visible that writing 'array'
in the validation would be enough. But in my case, when I write:
$request->validate([
'tags' => 'array',
]);
and pass an array [1,2,3]
using Postman, I get an error ["The tags must be an array."]
, and php handles it as a string, so when I try to get, for example, the first element $request->tags[0]
, I receive '['
. What's wrong here?
Upvotes: 1
Views: 269
Reputation: 1902
<form ..>
<input name="tags[]" value="1">
<input name="tags[]" value="2">
<input name="tags[]" value="2">
</form>
<script>
//your code to serialise and post form through JS goes here
</script>
In your request class
//TagsRequest.php
public function rules(){
return [
'tags'=>['array'],
'tags.*'=>[
//add rules for tags array elements
]
]
}
Upvotes: 0
Reputation: 33108
It appears as though when you pass [1,2,3]
, it's not an array, it's literally just a string. When you treat a string like an array in PHP, it will give you that character so $request->tags[0]
is just giving you the first character in the string which is [
.
When using postman and adding your key value pairs, set the keys and values like so...
+--------+-------+
| Key | Value |
+--------+-------+
| tags[] | 1 |
| tags[] | 2 |
| tags[] | 3 |
+--------+-------+
Upvotes: 1