模板用include引入是非常靈活的一種佈局方案。
但是由於官方教學說的不是太清楚,常常造成誤解。所以來說兩句話:
1.首先include引入的模板和action對應的模板之間的區別。
這是最容易混淆的。 action對應的模板是和action綁定的。
而include模板和action麼有任何關係!
include模板只是一段html,可以放在任何地方。它的參數不會經過定義它的那個action的解析,而是用它的那個action才會影響它的解析。
如果你用過js的模板就很好理解。
混淆的地方是include可以用控制器/方法的模式引用,這個意思只是說action控制器的view也可以當作模板來使用。但使用的只是view中的html程式碼而已。 action當中的程式碼是不會被執行的!
2.include的資料來源。
include的資料來源不是action,而是在include標籤中傳入的,例如官方教學的例子:
<include file="Public/header" title="ThinkPHP框架" keywords="开源 WEB开发框架" />
這裡title和keywords是兩個變數傳遞到include模板中了,這兩個變數可不是action提供的啊。
結論:
include模板是獨立的,可以再任何地方呼叫。具有接收參數的功能。
牢記;誰用誰傳參!
把action的view當作include模板只是方便使用現成的html而已。當action對應的view作為include模板引入的時候,它已經異化成了獨立的html片段,和action沒有任何關係了。所以官方的說法:
注意,包含模版檔案並不會自動呼叫控制器的方法,也就是說包含的其他模版檔案中的變數賦值需要在目前操作中完成。
include中如果包含變量,來源也是目前使用這個include的action,而不是那個作為view來源的action!那個action是不會被執行的!現在你可以理解了吧。
所以,理解include模板的關鍵就是它是許多可以重複使用的html片段的組織方式。至於這些片段是獨立存在的html還是action中的view都無所謂。
至於本人的做法,則是放到放置css,img,js的那個public資料夾下面。加上一個htmltpl的資料夾,引用的時候
<include file="./Public/htmltpl/abc.html" />
淺顯的理解,不知道說明白了沒有。
以上是thinkphp中關於include的正確理解與用法的詳細內容。更多資訊請關注PHP中文網其他相關文章!