Search code examples
laravelcheckboxboolean

Error retrieving a checked Checkbox in Laravel as a boolean


I'm a bit new to laravel and I'm working on a laravel application which has a checkbox field which should have a boolean value of 1 when the user checks the checkbox, and 0 when the checkbox is unchecked.

I want to retrieve the boolean value as either 1 or 0 and save in a db.

Please assist?

View

<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>

Controller

 public
    function validatePlanEntries(Request $request)
    {

        $validation = $this->validate($request, [
            'WithSpouse' => (\Input::has('spouse')) ? 1 : 0;
        ]
}

Solution

  • 1st way is send correct value from frontend side

    you can add jquery or javascript at frontend side on change event of checkbox :

    <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>
    

    at your backend side , now you can check :

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

    2nd way is only check at your backend

    you will get your checkbox value=on if it checked

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

    you can use ternary condition as well , like :

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