Issue
I have 3 input tag with type number in blade.php. I want to validate the sum is equal to 100. So, how to do that? Thanks for your help.
Blade.php
<input type="number" name="number1" />
<input type="number" name="number2" />
<input type="number" name="number3" />
Controller
public function store(Request $request) {
$data = $request->validate([
'number1' => 'required',
'number2' => 'required',
'number3' => 'required',
]);
$sum = $data['number1'] + $data['number2'] + $data['number3'];
$myDb = new Mynumber();
$myDb->number1 = $data['number1'];
$myDb->number2 = $data['number2'];
$myDb->number3 = $data['number3'];
$myDb->save();
}
Solution
You can extend the validator with a new rule by adding this in a service provider:
$validator->extend("sumsTo", function ($attribute, $value, $parameters) {
$expected = floatval(array_shift($parameters));
$otherParameters = request()->only($parameters);
return floatval(array_sum(array_merge(array_values($otherParameters), [ $value ]))) === $expected;
});
Then you'd use this as:
$request->validate([
'field1' => 'sumsTo:100,field2,field3',
'field2' => 'sumsTo:100,field1,field3'
'field3' => 'sumsTo:100,field1,field2'
]);
This will flag all 3 fields as failed as well.
Answered By - apokryfos
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.