简体   繁体   中英

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

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

It depends on how are you trying to persist this data.

If you're using save() method, do something like this:

$model->wifi = isset($request->wifi);

PS: I guess it should be ->nullable()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM