1. 程式人生 > >關於thinkphp5自定義標籤庫解析的問題

關於thinkphp5自定義標籤庫解析的問題

今天tp5的自定義標籤庫著實坑了我一把,原因有兩點:

1.預載入標籤是有快取的,你設定了預載入標籤庫,要刪除快取後重新重新整理才有效,否則無效,這導致我除錯的時候不知道自己到底設定對了沒有
2.我一直以為配置是會自動繼承父級的配置的,也就是說,在模組中我只需要寫好不同的配置就行,然後事實上一位陣列的配置確實是這樣,但是二位陣列的時候第二層陣列是會直接覆蓋第一層陣列的,舉個栗子:
在這裡插入圖片描述
猜猜結果是什麼,對了,結果是a和b被完全覆蓋,ac,dy,bc直接不見了,但是f還在
所以要正確載入標籤庫,應該在對應的模組下面載入
在這裡插入圖片描述
配置好後記得刪除快取
關於大小寫的問題,載入的時候都要大寫,在模板中要小寫,切記!!!
在這裡插入圖片描述

在這裡插入圖片描述
補充另一個坑爹的東西,如圖
在這裡插入圖片描述
tp中的標籤引數是可以傳變數的,所以我也理所當然的認為這裡傳遞的變數會自動解析成變數供我在標籤庫中使用,然而…我想多了!,這裡傳遞的是什麼在標籤庫中獲取到的就是什麼!!!
在這裡插入圖片描述
起初我也以為$this->autoBuildVar就是解析變數的函式,然而又不是!!!這個函式僅僅是把你傳遞的字串轉換為$xxx的變數格式,想要把傳遞的變數真正解析出來,需要你在最後拼接的字串中拼接出來,就像上圖中的$__TAG__陣列,起初我是直接把引數的$tag json序列化放進去,以為變數就會自動解析,然後還是學藝不精啊,各位同學,請記住啊,在標籤庫中獲取的引數如果是變數,切記要在拼接的時候放在php內容裡面拼接就可以了.
上圖我使用了type來判斷,一定要放在這裡面,因為$parse這裡面的程式碼是最終插入到模板的,自然帶php的程式碼會解析為真正的php程式碼,而上面的程式碼都不會在模板中使用,這也是在外面無法解析的真正原因!!!