could not validate an array of input in laravel 8. from the frontside I have gotten the serialized form data which was successfully accessible from the backend.
JavaScript
public function GetForm(Request $request)
{
$request = $request->all();
$input = array();
parse_str($request['data'], $input);
return $input;
}
output:
{
"inputID":"26",
"inputName":"Julie Hughes est",
"inputPhone":"+94111222333",
"inputEmail":"testmail@gmail.com"
}
what I want is to validate the form inside the update function before I update the data when the user changes.
JavaScript
public function update(Request $request)
{
if (request()->ajax()) {
$request = $this->GetForm($request);
$object = User::find($request['inputID']);
$object->name = $request['inputName'];
$object->phone = $request['inputPhone'];
$object->email = $request['inputEmail'];
$object->save();
return response()->json([
"message" => "User Information has been updated"
], 200);
}
}
what I have tried on the validation function is below
JavaScript
public function GetForm(Request $request)
{
$request = $request->all();
$input = array();
parse_str($request['data'], $input);
return $this->validate(
$input, // Expected type 'IlluminateHttpRequest'. Found'array'.intelephense(1006)
[
'inputID' => ['required'],
'inputName' => ['required', 'string', 'max:255'],
'inputPhone' => ['required', 'string', 'email'],
'inputEmail' => ['required', 'min:9', 'number'],
],
);
}
looking recommendation to solve this issue.
JavaScript
$('#updateBtn').click(function() {
console.log('update triggered')
axios.get('/users/update/', {
params: {
data: $("#updateForm").serialize()
}
})
.then(function(response) {
let i = response.data
console.log(i);
userTable.ajax.reload();
$('#editModel').modal('hide')
window.toastr.success(i.message);
}).catch(function(error) {
console.log(error)
})
})
Advertisement
Answer
Try the validation like this.
JavaScript
public function getForm(Request $request)
{
$inputs = $request->all();
$validator = Validator::make($inputs, [
'inputID' => 'required',
// other validations
]);
if ($validator->passes()) {
return response()->json(['message'=>'User Information has been updated.']);
}
return response()->json(['error'=>$validator->errors()]);
}
Validator::make uses the Validator facade to create a validator instance for you. Nothing more. You have to execute the validation and implement the error handling yourself.