checkboxでvalueを0に出来ない
この方法だと出来ない。
<?php
$options = array('hiddenField' => false,'value'=>'0');
echo $this->form->checkbox('samples.check1.', $options);
echo '1-A<br/>';
$options = array('hiddenField' => false,'value'=>'1');
echo $this->form->checkbox('samples.check1.', $options);
echo '1-B';
?>
出力結果
<input type="checkbox" name="data[samples][check1][]" value="1" id="samplesCheck1"/>1-A<br/>
<input type="checkbox" name="data[samples][check1][]" value="1" id="samplesCheck1"/>1-B
理由はFormHelper.phpのcheckboxメソッドに下記の処理があるため
if (empty($options['value'])) {
$options['value'] = 1;
}
しかし、下記のやり方だと出来る。
ただし、<div>と<label>が勝手に付いてしまう。
<?php
$label=array('2-A','2-B','2-C','2-D');
echo $this->Form->input('check2', array('type' => 'select',
'multiple' => 'checkbox',
'options' => $label,
'div'=>false,
'label'=>false,
'hiddenField'=>false,
'before'=>'',
'after'=>'',
'between'=>'',
'value' => array(0, 2)
)
);
?>
出力結果
<div class="checkbox"><input type="checkbox" name="data[samples][check2][]" checked="checked" value="0" id="SamplesCheck20" /><label for="SamplesCheck20" class="selected">2-A</label></div>
<div class="checkbox"><input type="checkbox" name="data[samples][check2][]" value="1" id="SamplesCheck21" /><label for="SamplesCheck21">2-B</label></div>
<div class="checkbox"><input type="checkbox" name="data[samples][check2][]" checked="checked" value="2" id="SamplesCheck22" /><label for="SamplesCheck22" class="selected">2-C</label></div>
<div class="checkbox"><input type="checkbox" name="data[samples][check2][]" value="3" id="SamplesCheck23" /><label for="SamplesCheck23">2-D</label></div>
selectメソッドでも出来る。
<?php
$label=array('2-A','2-B','2-C','2-D');
echo $this->Form->select('check3',
$label,
array('multiple' => 'checkbox',
'div'=>false,
'label'=>false,
'hiddenField' => false,
'class'=>'testClass'
)
);
?>
sample