smarty塊函式使用

哆啦啊梦發表於2024-06-01
  • 預設地,你的函式實現會被Smarty呼叫兩次:一次是在開始標籤,另一次是在閉合標籤(參考下面的&$repeat關於怎樣改變這種設定)。
  • 只有塊函式的開始標籤具有屬性。所有屬性包含在作為關聯陣列的$params變數中,經由模板傳遞給模板函式。當處理閉合標籤時,函式同樣可訪問開始標籤的屬性。
  • $content變數值取決於你的函式是被開始標籤呼叫還是被閉合標籤呼叫。假如是開始標籤,變數值將為NULL,如果是閉合標籤,$content變數值為模板塊的內容。請注意這時模板塊已經被Smarty處理過,因此你所接收到的是模板的輸出而不是模板資源。
  • &$repeat變數為true,在隨後的所有塊函式(閉合標籤)呼叫中其值始終為false。函式每次執行返回的&$repeat值為true時,{func} .. {/func}之間的內容會被求值,同時引數$content裡的新塊內容會再次呼叫執行函式(譯註:執行方法有點類似遞迴函式)。

如果你巢狀了塊函式,可以透過$smarty->_tag_stack變數訪問找出父塊函式。只須對塊函式執行一下var_dump(),函式結構就可以一目瞭然了。

相關文章