Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

cakephp: How to set checkbox to checked?

Tags:

cakephp

I am using

$form->input('Model.name', array('multiple'=>'checkbox'); 

I am trying to base on model data to set certain checkboxes to checked.

How can i do that?

like image 624
Dave Avatar asked Dec 26 '09 02:12

Dave


2 Answers

cmptrgeekken's solution works for a single checkbox. I'm assuming you're generating a multiple checkboxes, for a HABTM relation or something similar.

You need to pass a array with the values of the elements that are going to be selected to the method, like this:

$options = array(1 => 'ONE', 'TWO', 'THREE'); $selected = array(1, 3); echo $form->input('Model.name', array('multiple' => 'checkbox', 'options' => $options, 'selected' => $selected)); 

is going to generate this:

 <div class="input select">       <label for="ModelName">Name</label>       <input name="data[Model][name]" value="" type="hidden">        <div class="checkbox">            <input name="data[Model][name][]" checked="checked" value="1" id="ModelName1" type="checkbox">            <label for="ModelName1" class="selected">ONE</label>       </div>       <div class="checkbox">            <input name="data[Model][name][]" value="2" id="ModelName2" type="checkbox">            <label for="ModelName2">TWO</label>       </div>       <div class="checkbox">            <input name="data[Model][name][]" checked="checked" value="3" id="ModelName3" type="checkbox">            <label for="ModelName3" class="selected">THREE</label>       </div>  </div> 

The first and third checkbox checked.

Just remember that you're actually working with a multiple select element that is just displayed as a bunch of checkboxes (Which is IMO better because of the usability).

like image 121
Marko Avatar answered Sep 20 '22 23:09

Marko


I don't use CakePHP, but according to the docs, it appears as though you should be able to add the option 'checked'=>true:

$form->input('Model.name', array('type'=>'checkbox','checked'=>true)); 

since that's one of the options of the checkbox function.

like image 31
cmptrgeekken Avatar answered Sep 23 '22 23:09

cmptrgeekken