シェアする

  • このエントリーをはてなブックマークに追加

[CakePHP]BoostCakeFormHelperでmultipleのcheckboxでcheckedがずれる問題の修正

medium_436602164

最近管理画面はBootstrapを必ず使っているので、尊敬してやまないSLYWALKERさんのBoostCakeをいつも利用させて頂いています。

BoostCakeのお陰で、ビューのForm作りが3倍楽になるのですが、ひとつだけ困ったことがありまして、マルチプルのチェックボックスでcheckedのチェックボックスがずれてしまうんですよね。

SLYWALKERさんが修正してくださいました!History for View/Helper/BoostCakeFormHelper.php – slywalker/cakephp-plugin-boost_cake

echo $this->Form->input('CustomerTag.id', array(
	'type' => 'select',
	'options' => $customerTagList,
	'multiple' => 'checkbox',
	'label' => array(
		'text' => '顧客タグ',
	),
	'class' => 'checkbox-inline',	// ここでclassを指定
));

こんな感じになってしまいます。

原因は、BoostCakeFormHelperの継承元のFormHelperの_selectOptionsメソッドでcheckedならラベルのクラスにselectedをセットすることにありました。

BoostCake側の_selectOptionsではlabelのクラスとして継承元で追加したselectedに加えて、inputのclassで指定したcheckbox-inlineの両方を出力することからlabelのクラス指定が2つ出力されてしまいます。

その結果2つ目のcheckbox-inline指定が無効になってしまうようでした。*[1]

そこで、BoostCakeFormHelperに以下のような修正を加えて、input側ので指定したクラスと継承元でセットされたクラスをマージするようにしました。

BoostCakeFormHelper.php

SLYWARKERさんがGithub上で修正してくれたのでそちらを参照してください→ cakephp-plugin-boost_cake/View/Helper/BoostCakeFormHelper.php at master ? slywalker/cakephp-plugin-boost_cake

  1. 長い。。あとで自分で読んで意味がわかるか不安。 []

シェアする

  • このエントリーをはてなブックマークに追加

フォローする