PHP
ZendFramework

zend formでMultiCheckboxのlabelにclassを追加する方法

業務でZendFramework1にあるZendFormをよく使うが、
multiCheckboxを使うときに、labelにCSSを追加したい!と思っていて調べたらできたのでメモ。

結論

setAttribsに「label_○○」でlabelへ追加ができる。

php側でformを作成する。
普通にsetAttribsに’class’追加すると、、、

$element = clearElements('multiCheckbox', 'hoge');
$element->setLabel('ほげ');
$element->addMultiOptions(array(
   '1' => 'ほげほげ1',
   '2' => 'ほげほげ2',
));
$element->setAttribs(array(
  'class' => 'hoge',
));
$this->addElement($element);
<label id="hoge-1"><input name="hoge[]" id="hoge-1" class="hoge" type="checkbox">ほげほげ1</label>
<label id="hoge-2"><input name="hoge[]" id="hoge-2" class="hoge" type="checkbox">ほげほげ2</label>

inputタグの要素にclassを追加できる。
が、やりたいのはlabelの方にclass追加すること。
で公式サイト見てたらそれっぽいのを見つけたので試したらできた。

setAttribsに追加するキーを’label_class'へ変更する。

$element = setAttribs(array(
  'label_class' => 'hoge', 
));

と書くと、無事にlabelに要素追加ができる!

<label id="hoge-1" class="hoge"><input name="hoge[]" id="hoge-1" type="checkbox">ほげほげ</label>
<label id="hoge-2" class="hoge"><input name="hoge[]" id="hoge-2" type="checkbox">ほげほげ</label>