最近这个项目里,涉及到很多表单的处理,select, radio, checkbox等等。而且这些都是动态生成的,所以就必须得找一个好办法处理这些表单元素。
由于系统采用smarty,所以首先考虑用smarty自带的表单处理函数,html_checkboxes,html_options, html_radios,html_select_date,html_select_time,html_select_time等。。
但是在使用的过程中,html_checkboxes却很讨厌。只有一个separator方法,要么弄成一行,要么弄成一列,元素一多了都很丑。比不上用表格控制。
解决方案一:给smarty的源文件动了一下小手术。
先加一个参数:
1 | case 'cols': |
修改返回值:
1 | if(!emptyempty($params['assign'])) { |
大功告成,smarty模板文件里的调用:
1 | html_checkboxes name="stateserve" options=$stateserve cols=8 |
解决方案二:
不直接显示,先取得返回值,再用html_table显示它:
使用html_checkboxes里的隐藏参数assign:
1 | html_checkboxes name="stateserve" options=$stateserve cols=8 assign="checkboxes" |
这里,相应于执行了一次
1 | $smarty->assign("checkboxes",$_html_result); |
得到了$checkboxes这个smarty变量。下面用html_table显示它:
1 | html_table loop=$checkboxes cols=8 table_attr='border="0"' |
两种方案的效果一样。