Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel 5 Form Model Binding Checkbox Values

I am using a checkbox in a form, for some reasons I can't store the value of the checkbox status (checked or unchecked).

I am using form model binding.

My form is:

{!! Form::model($profile, ['method' => 'PATCH', 'action' => ['ProfilesController@update', $profile->id]]) !!}

<div class="form-group">
  {!! Form::label('wifi', 'Wifi') !!}
  {!! Form::checkbox('wifi','yes', $profile->wifi) !!}Wifi
</div>

{!! Form::close() !!}

My Schema:

$table->boolean('wifi')->nullable();

But I also tried it with an integer

I can't figure out what I am doing wrong

like image 598
Mamulasa Avatar asked Mar 11 '23 11:03

Mamulasa


1 Answers

Your this piece of code

{!! Form::checkbox('wifi','yes', $profile->wifi) !!}Wifi

is generating this

<input checked="checked" name="wifi" type="checkbox" value="yes">

Which means that you are sending the value yes to the server but your column data type is not varchar/text. You set it to boolean.

update your code to this because you are using form model binding so no need to popluate it, laravel will do this for you.

{!! Form::checkbox('wifi') !!} Wifi

Also, include your wifi key in fillable and casts array. like so

protected $fillable = [ ..., 'wifi' ];

protected $casts = [ 'wifi' => 'boolean' ];

Note: your schema code

$table->boolean('wifi')->nullable;

nullable is not a property, it is a function. so update it as well

$table->boolean('wifi')->nullable();

After that refersh your database migration

php artisan migrate:refresh
like image 140
Zayn Ali Avatar answered Mar 20 '23 21:03

Zayn Ali