在自定义标签的属性里使用变量

jerry PHP 2015年11月18日 收藏
用TP不久,刚使用自定义标签发现不会在属性里使用变量,看了下源码下的TagLibHtml.class.php,终于弄清楚怎么用了
<?php
import('TagLib');
Class TagLibWx extends TagLib{
    Protected $tags = array(
        'wxtype' => array(
            'attr' => 'value',
            'close' => 0,
            )
        );
    
    //eg:<wxtype value="$wx['type']"/>
    Public function _wxtype($attr){
        $attr = $this->parseXmlAttr($attr);
        $value = $attr['value'];
                $parseStr = '非服务';
        if(!empty($value)){
            $parseStr = '<?php if('.$value.' == \'service\'){ echo \'服务\'; }else{ echo \'非服务\';} ?>';
        }
        
        return $parseStr;
    }
}
假如在模板里有一个数组变量wx,在模板里可以这么写:
<wxtype value="$wx['type']"/>
其实原理很简单:就是在TagLibWx.class.php里对应的方法里输出php代码到模板页面,相当于在模板里写了一段Php代码