测试功能:根据source(二维数组或文本[1,男|0,女])生成单选按钮组,
text:显示值 对于二维数组
val:取值 对于二维数组
文本:逗号前为值,后为显示值
<?php
/**
+-----------------------------
* @desc ThinkPHP Fcb自定义标签
+-----------------------------
* @author 710
+-----------------------------
* @date 2011-12-14
+-----------------------------
*/
import("TagLib");
class TagLibFcb extends TagLib{
protected $tags = array(
'radiolist'=>array('attr'=>'name,source,type,text,val,checked,style,class','close'=>0,'level'=>3,'alias'=>'rt,rl'),
);
/**
+-------------------------------
* @desc fcb:radiolist 解析
* @param string $type=>数据源类型
* list:数组源,text:文本源(如:1,男|2,女)
+-------------------------------
*/
public function _radiolist($attr,$content,$type='list'){
$tag = $this->parseXmlAttr($attr,'radiolist');
$type = empty($tag['type']) ? $type : $tag['type'];
$source = $tag['source'];
$name = isset($tag['name']) ? 'radio'.date('is') : $tag['name'];
$text = empty($tag['text']) ? 'text' : $tag['text'];
$val = empty($tag['val']) ? 'id' : $tag['val'];
$style = empty($tag['style']) ? '' : 'style="'. $tag['style'].'"';
$class= empty($tag['class']) ? '' : 'class="'. $tag['class'].'"';
$checked = isset($tag['checked']) ? $tag['checked'] : '';
$result='';
if($type=='list'){
$result.='<?php foreach($'.$source.' as $key=>$val): ?>';
$result.='<input type="radio" <?php if($val['.$val.']=="'.$checked.'"): echo "checked=\"checked\"";endif ?> '.$class.' '.$style.' name="'.$name.'" value="<?php echo $val['.$val.'] ?>" /><?php echo $val['.$text.'] ?>';
$result.='<?php endforeach ?>';
}elseif($type=='text'){
$list = explode("|",$source);
foreach($list as $key=>$val){
$item = explode(",",$val);
$result .= '<input type="radio" '.($item[0]==$checked?"checked=\"checked\"":"").' value="'.$item[0].'" name="'.$name.'" '.$class.' '.$style.' />'.$item[1];
}
}
return $result;
}
/**
+------------------------------
* radiolist 别名 => 数据源为文本
* <fcb:rt source="1,男|2,女" />
* 逗号前为取得值,后为显示值
+------------------------------
*/
public function _rt($attr,$content){
return $this->_radiolist($attr, $content,'text');
}
/**
+-------------------------------
* radiolist 别名=> 数据源为数组
* <fcb:rl source="list" text="name" val="id" />
* text:显示值,val:取值
+-------------------------------
*/
public function _rl($attr,$content){
return $this->_radiolist($attr, $content,'list');
}
}
?>
浙公网安备 33010602011771号