模版基礎[1]

ThinkPHP 內置了一個基於 XML 的性能卓越的模版引擎 ThinkTemplate,javascript

使用了動態編譯和緩存技術,支持自定義標籤庫。php

 

一. 變量輸出html

在模版中輸出變量是很是容易的,使用 assign()方法,以鍵值對的方式傳遞變量和值。java

在 Home/controller/UserController.class.php 中輸入如下代碼:數組

 

1 class UserController extends Controller {
2         public function index() {
3             $user='蠟筆小新';
4             $this->assign('user',$user);//第一個user是傳給View/User/index.html中的user
5             $this->display();
6         }
7 }

 

而後在 View/User/index.html 中直接調用 {$user} 便可輸出user的值。瀏覽器

模版編譯後的結果是: <?php  echo ($user); ?> ,能夠的 Runtime/Cache/Home 下查看緩存

 

模版標籤{和$之間不能用任何空格,不然沒法解析。若是你想更換兩個{}能夠設置:cookie

在 WeiBo/Common/Conf/config.php 中設置:session

1 //修改默認標籤
2 'TMPL_L_DELIM'=>'<{',
3 'TMPL_R_DELIM'=>'}>',

這樣能夠防止與javascript產生衝突。之後調用就是 <{$user}> ,也要注意中間不能有空格。函數

 

若是傳遞一個數組,咱們直接傳遞過去後,經過兩種方式調用:

在 Home/controller/UserController.class.php 插入如下代碼:

 

1 class UserController extends Controller {
2         public function index() {
3             $data['user']='蠟筆小新';
4             $data['email']='bnbbs@163.com';
5             $this->assign('data',$data);
6             $this->display();
7         }
8 }

 

而後在 View/User/index.html 中調用方式有兩種:

1 //第一種,直接加dot在中間
2 {$data.user}
3 //第二種,使用PHP原本的方法
4 {$data['email']}

但其實在  Runtime/Cache/Home  中顯示可見,調用的時候,仍是會轉化爲以PHP原本的方式調用的。

 

若是傳遞一個對象,咱們直接傳遞過去後,經過兩種方式調用:

首先在 Home/controller/UserController.class.php 中插入如下代碼:

 

1 class UserController extends Controller {
2         public function index() {
3             $data=new \stdClass();
4             $data->user='蠟筆小新';
5             $data->email='bnbbs@163.com';
6             $this->assign('data',$data);
7             $this->display();
8         }
9 }

 

而後在 View/User/index.html 中調用方式有兩種:

1 //第一種,用對象的方式調用
2 {$data->user}
3 //第二種,直接用冒號的方式
4 {$data:email}

但其實在 Runtime/Cache/Home 中顯示可見,調用的時候,仍是會轉化爲以對象的方式調用的。

 

 

 

二.系統變量

在模版中,不但能夠輸出 PHP 的系統變量,還能夠輸出 ThinkPHP 的系統變量。

在 View/User/index.html 中寫入如下代碼,則在 Runtime/Cache/Home 會自動編譯爲相應的php代碼:

 

 1 {$Think.server.script_name}
 2 {$Think.session.admin}
 3 {$Think.get.user}
 4 {$Think.post.user}
 5 {$Think.request.user}
 6 {$Think.cookie.name}
 7 
 8 {$Think.const.APP_PATH}
 9 {$think.config.url_model}
10 {$Think.lang.var_error}

在 Runtime/Cache/Home 顯示爲:

 1 <?php echo ($_SERVER['SCRIPT_NAME']); ?><br>
 2 <?php echo (session('admin')); ?><br>
 3 <?php echo ($_GET['user']); ?><br>
 4 <?php echo ($_POST['user']); ?><br>
 5 <?php echo ($_REQUEST['user']); ?><br>
 6 <?php echo (cookie('name')); ?><br>
 7  
 8 <?php echo (APP_PATH); ?><br>
 9 <?php echo ($think["config"]["url_model"]); ?><br>
10 <?php echo (L("var_error")); ?><br>

 

三. 使用函數

若是有時,咱們須要在模版中使用 PHP 函數的話,能夠按照下面的格式使用:

在 View/User/index.html 中調用:

 {$user|md5} ,這時輸出的即爲傳過來的user並用md5加密

 

若是有多個參數要傳遞,能夠參考以下設置:

1  {$date|date="Y-m-d H:i:s",###} 

PS:表示 date 函數傳入兩個參數,每一個參數用逗號分割,這裏第一個參數是 Y-m-d
H:i:s,第二個參數是前面要輸出的 date 變量,由於該變量是第二個參數,所以須要用###
標識變量位置,編譯後的結果是:

 

1 <?php  echo (date($date,"Y-m-d H:i:s")); ?>

 

首先在 Home/controller/UserController.class.php 中傳入參數:

class UserController extends Controller {
        public function index() {
            $date=time();
            $this->assign('date',$date);
            $this->display();
        }
}

而後在 View/User/index.html 中寫入:

1 {$date|date="Y-m-d H:i:s",###}

這時在 Runtime/Cache/Home 中顯示的代碼爲:

1 <?php echo (date("Y-m-d H:i:s",$date)); ?>

瀏覽器輸出的結果爲當前的時間,格式爲 Y-m-d H:i:s ,若是在 View/User/index.html 中的代碼不加上###,則在 Runtime/Cache/Home 中顯示爲:

1 <?php echo (date($date,"Y-m-d H:i:s")); ?>

這時沒有結果輸出

 

前面輸出變量,在後面定義,則不須要###

1 {$user|mb_substr=0,3,'UTF-8'}

這時在 Runtime/Cache/Home 中顯示爲:

1 <?php echo (mb_substr($user,0,3,'UTF-8')); ?>

 

 

多個函數用"|"隔開便可

1 {$user|mb_substr=0,3,'UTF-8'|md5|sha1}

PS:若是你以爲以上寫法須要在腦海裏二次翻譯,太過於麻煩,那麼能夠用如下的格式寫法:

1 {:md5(mb_substr($user,0,3,'UTF-8'))}

很相似PHP的寫法,就是必須在前面加上":" 

 

當傳遞過來的變量若是沒有值的時候,模版提供了默認值輸出功能。

1 {$user|default='什麼都沒有!'}

 

 

四.使用運算符

咱們能夠在模版中使用運算符,包括對「+」、「-」、「*」、「/」、「%」、「--」和「++」的支持。

在 Home/controller/UserController.class.php 寫入如下代碼:

1 class UserController extends Controller {
2         public function index() {
3             $data['num']=10;
4             $this->assign('data',$data);
5             $this->display();
6         }
7 }

而後在 View/User/index.html 寫入調用代碼:

1 {$data['num']+10}

 

還有一種是使用function法, Home/controller/UserController.class.php 中的代碼不變, View/User/index.html  中寫入如下代碼:

1 {$data['num']+getNum()}  //getNum()是調用的函數

而後在 WeiBo/Common/Common/function.php 中寫入如下getNum()的函數

1 function getNum() {
2     return 10;
3 }

這樣返回時 $data['num'] 也是加上10.

 

模版還支持三元運算符:

1 {$data['num']?'有值':'無值'}
相關文章
相關標籤/搜索