如果Checkbox值为true,则为Laravel,Price为必需

时间:2018-01-30 13:01:33

标签: php laravel laravel-5

我的刀片中有一个复选框,用户可以启用其他付款方式,现在我想如果有人选中此框,则此付款方式需要此价格。

复选框刀片

<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();
    }
}

如果有人现在点击了该复选框,他们还必须输入价格,否则会收到错误消息。

如何更改代码才能使其正常工作?

3 个答案:

答案 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();
    }

https://laravel.com/docs/5.5/validation

答案 2 :(得分:0)

尝试以下代码:

  If($request->accept1 === true){

            Validator::make($request->all(), [
                   "newprice" =>"required"
                  ],["newprice.required"=>"message"]);
     }