zoukankan      html  css  js  c++  java
  • ThinkPHP 自定义标签测试 冰糖

    测试功能:根据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');
    	}
    	
    }
    ?>
    
  • 相关阅读:
    MongoDB 副本集搭建 & 副本集扩容
    MongoDB 部署 & 基础命令
    MyBatis常见面试题:#{}和${}的区别是什么?
    MyBatis常见面试题:说说MyBatis的工作原理
    Java四种引用类型回收时机介绍
    Java虚拟机之垃圾回收器
    Servlet中过滤器、监听器和拦截器的区别
    Java里一个线程两次调用start()方法会出现什么情况
    二叉树、二叉查找树、平衡树和红黑树概念及其性质
    转:基于Redis实现延时队列
  • 原文地址:https://www.cnblogs.com/hxtgirq710/p/tplib.html
Copyright © 2011-2022 走看看