Smary 2.6.10 以降の html_radios 関数で label タグの for 属性を設定する方法

  例えば,以下のようなコードがあったとして

<?php
$smarty->assign('cust_radios', array(
                               1000 => 'Johnson',
                               1001 => 'Smith'
                               );
$smarty->assign('customer_id', 1001);
?>


  テンプレートを以下のように記述する.

{html_radios name="id" options=$cust_radios selected=$customer_id}


  出力はこうなるはずだった.

<label for="id_1001"><input type="radio" name="id" value="1001" id="id_1001" checked="checked" />Johnson</label>
<label for="id_1002"><input type="radio" name="id" value="1002" id="id_1002" />Smith</label>


  ところが Smarty 2.6.10 以降,出力は以下のようになる.

<label><input type="radio" name="id" value="1001" checked="checked" />Johnson</label>
<label><input type="radio" name="id" value="1002" />Smith</label>


  これで,何が問題かというと,IE では Johnson や Smith をクリックしても,ラジオボタンは選択されない.
  Firefox や Opera などでは OK なのに.
  
  そこで Smarty 2.6.10 辺りから追加された label_ids オプションを使うと

{html_radios name="id" options=$cust_radios selected=$customer_id label_ids=true}


  ちゃんと,label タグに for 属性が付いて,IE でも選択できるようになった.

<label for="id_1001"><input type="radio" name="id" value="1001" id="id_1001" checked="checked" />Johnson</label>
<label for="id_1002"><input type="radio" name="id" value="1002" id="id_1002" />Smith</label>


  http://viewcvs.php.net/viewcvs.cgi/smarty/libs/plugins/function.html_radio ...