[CakePHP2]checkboxをカスタムしますよ

like a shit.

制御の効かないinputメソッド

inputでやると書くのは簡単

1
echo $this->Form->input('UserInterests.interest_id', array('multiple' => 'checkbox'));

だけど、HTML生成で色々勝手にやられるので、デザイン当て込みがむしろ大変↓

1
2
3
4
5
<div class="input select"><label for="UserInterestsInterestId">Interest</label><input type="hidden" name="data[UserInterests][interest_id]" value="" id="UserInterestsInterestId"/>
 
<div class="checkbox"><input type="checkbox" name="data[UserInterests][interest_id][]" value="1" id="UserInterestsInterestId1" /><label for="UserInterestsInterestId1">ショッピング</label></div>
<div class="checkbox"><input type="checkbox" name="data[UserInterests][interest_id][]" value="2" id="UserInterestsInterestId2" /><label for="UserInterestsInterestId2">旅行</label></div>
イカ省略ゲソ

書くのはだるいけど、自由に制御できるcheckboxメソッド(とlabelメソッド)

1
2
3
4
5
6
7
8
<ul class="interest clearfix">
<?php foreach($interests as $key => $val) {
echo '<li>';
echo $this->Form->checkbox('UserInterests.interest_id.', array('value' => $key, 'hiddenField' => false));
echo $this->Form->label(null, $val, array('class' => 'anyclass'));
echo '</li>';
} ?>
</ul>

↑モデル名の後ろに’.’を付けるのがちょっとした匠の技()
↓で、生成されたこれ

1
2
3
4
5
<ul class="interest clearfix">
<li><input type="checkbox" name="data[UserInterests][interest_id][]"  value="1" id="UserInterestsInterestId"/><label for="UserInterestsInterestId" class="labelinterest">ショッピング</label></li>
<li><input type="checkbox" name="data[UserInterests][interest_id][]"  value="2" id="UserInterestsInterestId"/><label for="UserInterestsInterestId" class="labelinterest">旅行</label></li>
<li><input type="checkbox" name="data[UserInterests][interest_id][]"  value="3" id="UserInterestsInterestId"/><label for="UserInterestsInterestId" class="labelinterest">読書</label></li>
イカ省略ゲソ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です