Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Form Model Binding for checkboxes

I'm using Laravel 4.1 and in my app I need to show a form with pre filled checkboxes. But I try to do it with using Form Model Binding, it doesn't work.

{{ Form::model($user, array('route' => 'settings-notify')) }}

<div class="formRow form-horizontal_row">
    {{ Form::checkbox('notify_visit', '1') }}
</div>

<div class="formRow form-horizontal_row">
    {{ Form::checkbox('notify_rate', '1') }}
</div>


<div class="formSubmit">
   {{ Form::submit('Save') }}
</div>


{{ Form::close() }}

Is there any way to make it working?

like image 974
Ladislav M Avatar asked Feb 14 '23 07:02

Ladislav M


1 Answers

I ended up handling this in my controller because as @Ladislav Maxa says in their comment to @Antonio Carlos Ribeiro the database never updates. This is because empty checkboxes are not submitted with the form so no 'unchecked' value is available for updating the database.

The solution I used is to check for the existence of the field in the get object. If it's there the box was checked.

$notify_rate = Input::get('notify_rate') ? 1 : 0;
$data['notify_rate'] = $notify_rate;

Another way I have done this before was to create a text input with the same name and a value of 0 before the checkbox. If the checkbox is unticked the text input value is submitted, if the checkbox is ticked it's value is used.

<input name="notify_rate" type="text" value="0">
<input name="notify_rate" type="checkbox" value="1">

That's probably not valid HTML though and I prefer dealing with this server side.

like image 73
Ric Avatar answered Feb 16 '23 02:02

Ric