在上一章我們瞭解了如何通過assign方法把變數賦值到範本變數,這一篇我們來詳細瞭解下如何在範本中使用標籤輸出範本變數。
注意,本篇的描述僅針對使用內部範本引擎的情況,如果你使用了Smarty或者其他範本引擎,請參考其相關的變數輸出語法。
變數輸出
變數輸出的方法很簡單,例如,在控制器中我們給範本變數賦值:
$HTTP://www.aliyun.com/zixun/aggregation/11696.html">name = 'ThinkPHP';$this->assign('name',$name);$ this->display();
然後就可以在範本中使用:
Hello,{$name}!
範本編譯後的結果就是:
Hello,<?php echo($name);? >!
這樣,運行的時候就會在範本中顯示:
Hello,ThinkPHP!
注意範本標籤的{和$之間不能有任何的空格,否則標籤無效。 所以,下面的標籤
Hello,{ $name}!
將不會正常輸出name變數,而是直接保持不變輸出:
Hello,{ $name}!
普通標籤預設開始標記是 {,結束標記是 }。 也可以通過設置TMPL_L_DELIM和TMPL_R_DELIM進行更改。 例如,我們在專案設定檔中定義:
'TMPL_L_DELIM'=>'<{','TMPL_R_DELIM'=>'}>',
那麼,上面的變數輸出標籤就應該改成:
Hello,<{$name}>!
後面的內容我們都以預設的標籤定義來說明。
範本標籤的變數輸出根據變數類型有所區別,剛才我們輸出的是字串變數,如果是陣列變數,
$data['name'] = 'ThinkPHP';$data['email'] = 'thinkphp@qq.com';$this->assign('data',$data);
那麼,在範本中我們可以用下面的方式輸出:
Name:{$data.name}Email:{$data.email}
或者用下面的方式也是有效:
Name:{$data['name']}Email:{$data['email']}
當我們要輸出多維陣列的時候,往往要採用後面一種方式。
如果data變數是一個物件(並且包含有name和email兩個屬性),那麼可以用下面的方式輸出:
Name:{$data:name}Email:{$data:email}
或者
Name:{$data->name}Email:{$data->email}
系統變數
普通的範本變數需要首先賦值後才能在範本中輸出,但是系統變數則不需要,可以直接在範本中輸出,系統變數的輸出通常以{$Think 打頭,例如:
{$Think.server.script_name} // 輸出$_SERVER['SCRIPT_NAME']變數{$Think.session.user_id} // 輸出$_SESSION['user_id']變數 {$Think.get.pageNumber} // 輸出$_GET['pageNumber']變數{$Think.cookie.name} // 輸出$_COOKIE['name']變數
支援輸出$_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE變數。
還可以輸出常量
{$Think.const.MODULE_NAME}
或者直接使用
{$Think.MODULE_NAME}
輸出配置參數使用:
{$Think.config.db_charset}{$Think.config.url_model}
輸出語言變數可以使用:
{$Think.lang.page_error}{$Think.lang.var_error}