检索Laravel中作为布尔值的选中复选框时出错

时间:2018-10-09 13:28:01

标签: laravel checkbox boolean

我对laravel有点陌生,我正在开发一个laravel字段的checkbox应用程序,该字段的boolean值应为{{ 1}},当用户选中1时,checkbox,而未选中0时。

我想将布尔值检索为1或0并保存在数据库中。

请协助?

查看

checkbox

控制器

<form method="POST" action="{{ route('b2c.getplans') }}" id="travel_form"  accept-charset="UTF-8">

    <input type="hidden" name="_token" value="{{ csrf_token() }}">
    <div class="check-now {{ $errors->has('spouse') ? ' has-error' : '' }}">
        <h1 class="cover-travel">I am travelling with</h1>
        <label class="spouse-me">
            <h1 class="pumba">Spouse</h1>
            <input id="spouse" type="checkbox" name="spouse">
            <span class="checkmark" name="spouse"></span>
        </label>
        @if ($errors->has('spouse'))
            <span class="help-block">
                <strong>{{ $errors->first('spouse') }}</strong>
            </span>
        @endif
    </div>

    <button type="submit" class="form-b3c"> Get Plans</button>
</form>

3 个答案:

答案 0 :(得分:0)

您不必验证复选框的值。因为如果它的{ "data": "YOURIDKEYCOLUMN", "render": function (data) { return "<a href='/YOUREDITINGURL/Edit/"+data+"'>Edit</a>" } 会发送checked的值,而如果不是on则不会发送任何东西。

因此,您所需要做的就是获取是否选中该复选框,您可以按照以下步骤进行操作。

检索复选框的布尔值,

控制器

checked

答案 1 :(得分:0)

要以布尔值从请求中获取复选框值:

$yourModel->with_spouse = (bool) $request->spouse;

如果选中此复选框,则将其值(默认为on)传递给请求,并将非空字符串强制转换为布尔值将为您提供true。如果未选中复选框,则根本不会传递spouse键来进行请求,因此$request->spouse将返回null。将null转换为布尔值将导致false(在PHP true中,int是1,而false是int 0,这正是您所需要的想要)。

答案 2 :(得分:0)

第一种方法是从前端发送正确的值

您可以在复选框的change事件的前端添加jquery或javascript:

<input type="checkbox" name="checkbox" id="myCheckbox" />

<script>
$(document).on('change','#myCheckbox',function(){
    if($(this).is(':checked')){
       $('#myCheckbox').val(1);
    }else{
       $('#myCheckbox').val(0);
    }
});
</script>

在您的后端,现在您可以检查:

 $yourVariable=$request->input('checkbox');

第二种方法是仅在后端检查

如果选中checkbox value=on,您将得到

if($request->input('checkbox')=='on'){
   $yourVariable=1;
}else{
   $yourVariable=0;
  }

您也可以使用三元条件,例如:

$yourVariable = $request->input('checkbox')=='on' ? 1:0;