Smarty + HTML_QuickForm Checkboxの値の取得

概要

HTML_QuickForm での Checkbox の作成方法と Smarty による Checkbox の値の取得方法です。

目次

HTML_QuickForm での Checkbox の作成方法

  1. 「&HTML_QuickForm::createElement」でHTML_QuickFormオブジェクト参照からCheckboxを作成します。
    // checkbox
    $checkArray[] =& HTML_QuickForm::createElement('checkbox', 'a', null, 'checkboxA');
    $checkArray[] =& HTML_QuickForm::createElement('checkbox', 'b', null, 'checkboxB');
    $checkArray[] =& HTML_QuickForm::createElement('checkbox', 'c', null, 'checkboxC');
    
    &HTML_QuickForm::createElement (要素の種類)
    HTML_QuickForm_checkbox ([name 属性 [, ラベル [, 表示テキスト [, 属性]]]])
  2. 「addGroup」で要素を1つのグループとして登録します。グループとして登録した要素は配列で格納されます。
    $form->addGroup($checkArray, 'chechGroup', 'チェックボックスグループ', ' ');
    
    HTML_QuickForm::addGroup (要素の配列 [, グループ名 [, グループのラベル [, 区切り文字(配列) [, フォーム要素の名前にグループ名を使用するかどうか(要素を配列で保持するか)]]]])
  3. 作成された checkbox の htmlソースはこのようになります。
    チェックボックスグループ   (←グループのラベル)
    
    <input name="chechGroup[a]" type="checkbox" value="1" id="qf_46c2bc" />
    <label for="qf_46c2bc">checkboxA</label> 
    <input name="chechGroup[b]" type="checkbox" value="1" id="qf_fb26c0" />
    <label for="qf_fb26c0">checkboxB</label> 
    <input name="chechGroup[c]" type="checkbox" value="1" id="qf_1c6b9c" />
    <label for="qf_1c6b9c">checkboxC</label>
    

Smarty による Checkbox の値の取得方法

Checkbox の作成方法で示したように、生成された checkbox の内容は配列として保持されます。

  1. Checkbox の表示はグループで指定するとひとかたまりで表示されます。
    <table>
      <tr>
        <th>{$form.chechGroup.label}</th>
        <td>{$form.chechGroup.html}</td>
      </tr>
    </table>
    
  2. Checkbox の内容は checked 属性の付いた項目のみが配列に格納されます。
    また、value 属性には「value="1"」としてチェックされたという情報しか入っていません。そのため、ラベルと値の連想配列で要素を渡す「renderer」を使用する場合、値の取得ではどの要素がチェックされたのかわかりません。情報を取得するためには、要素のkey情報を取得する必要があります。
    {foreach from=$value.chechGroup item=itemval key=keyname}
      {$keyname}:{$itemval} <br />
    {/foreach}
    
  3. 取得した checkbox の内容はこのようになります。
      b:1 <br />
      c:1 <br />
    

投稿日:

ページのトップへ戻る