我的刀片中有一个复选框,用户可以启用其他付款方式,现在我想如果有人选中此框,则此付款方式需要此价格。
复选框刀片
<div class="form-group">
<label for="accept1">
<img src="/img/accept1.png">
Accept other payment method
</label>
<input type="checkbox" value="true" name="accept1"> Yes
</div>
价格刀片
<div class="form-group">
<label for="newprice"><img src="/img/newprice.png"> New</label>
<input type="number" step="any" name="newprice" value="{{old('newprice')}}">
</div>
控制器
<?php
if ($request->accept1 == 'true') {
$product->accept1 = true;
}
if ($request->newprice == 'true') {
if (!is_numeric($request->newprice) || $request->newprice <= 0.0001) {
session()->flash('errormessage', ' Price is required');
return redirect()->back()->withInput();
}
}
如果有人现在点击了该复选框,他们还必须输入价格,否则会收到错误消息。
如何更改代码才能使其正常工作?
答案 0 :(得分:0)
您可以使用Laravel 表格验证来执行此操作。
来自docs:
required_if:anotherfield,值,...
有效的字段您可以使用Laravel 表单验证来执行此操作:如果存在,则必须存在且不为空 另一个字段字段等于任何值。
<强>尝试:强>
$request->validate([
'newprice' => 'required_if:accept1,==,true',
]);
答案 1 :(得分:0)
您可以使用如下所示的laravel验证规则:
$validator = Validator::make($request->all(), [
"newprice" =>"required_if:accept1,==,true|numeric|min:0.0001"
]);
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
答案 2 :(得分:0)
尝试以下代码:
If($request->accept1 === true){
Validator::make($request->all(), [
"newprice" =>"required"
],["newprice.required"=>"message"]);
}