在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标签,把分类下的文章也调用了出来。