在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標簽,把分類下的文章也調用了出來。

