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