在tp6多应用自定义taglib标签一文中我们用到一个方法没有给详细解释,下面详细解释下。
$typeid = $this->varOrvalue($typeid);
// 代码
/**
* 自动识别构建变量,传值可以使变量也可以是值
* @access private
* @param string $value 值或变量
* @return string
*/
private function varOrvalue($value)
{
$flag = substr($value, 0, 1);
if ('$' == $flag || ':' == $flag) {
$value = $this->autoBuildVar($value);
} else {
$value = str_replace('"', '\"', $value);
$value = '"' . $value . '"';
}
return $value;
}上面的方法就是在taglib循环嵌套的时候可以让需要的属性使用变量,在获取tag值的时候用下面方法获取
$typeid = !empty($tag['typeid']) ? $tag['typeid']: 0; $typeid = $this->varOrvalue($typeid);
在循环的时候用下面方法,随便打个比方写个标签
{ht:channel id="vo"}
{ht:article typeid="$vo.id" id="vo2"}
{$vo.title}-{$vo2.title}-{$vo2.id}
{/ht:article}
{/ht:channel}在article标签中我们在获取typeid的时候使用了特殊方法,所以在给标签传值的时候可以使用变量。channel标签好比文章的分类,在循环分类的时候调用article标签,把分类下的文章也调用了出来。

