level1 = 等級一一般來說在template裡面,我要呼叫上述內容的寫法是:
level2 = 等級二
level3 = 等級三
{#level1#}
問題來了,如果我現在要依照PHP檔輸入的內容動態的取用上述內容的話呢?
比如說,透過PHP檔內的動作,現在template裡有個變數$para,內容是"level1"。
我想用它來取得config檔內同名的變數的數值。
很直覺的想法會是
{#$para#}之類的對吧?不過很可惜,Smarty不支援這種語法。
Smarty的config檔的變數(已讀入的)也會以$smarty->config->level1之類的方式儲存,
不過當然的,我也不能寫成$smarty->config->$para。
另一種想法是config裡面能不能直接寫陣列?
我自己嘗試不行,我也沒看到哪個範例可以的。
最後達成的作法是藉由template內嵌php程式碼。
將config的內容重組成template variables的陣列,傳入template中。
$ar = array('level1', 'level2', 'level3');然後在template裡面使用。
foreach($ar as $v)
{
$ar2[$v] = $this->get_config_vars($v);
}
$this->assign('ar', $ar2);
$ar[$para]
雖然是相當拐彎抹角的作法,不過會比在template裡面寫一堆重複的程式碼好多了。
沒有留言:
張貼留言