一、遍歷循環
ThinkPHP 內置標簽提供了 Volist 標簽、Foreach 標簽和 For 標簽。
在 Home/controller/UserController.class.php 中插入一下代碼:
1 class UserController extends Controller { 2 public function index() { 3 $user = M('User'); 4 $this->assign('data',$user->select()); 5 $this->display(); 6 } 7 }
Volist 標簽:通常用于查詢數據集的結果輸出,通過 select()方法返回的是一個二
維數組,可以直接使用 volist 標簽進行輸出。
然后在 View/User/index.html 中的代碼:
1 <ul> 2 <volist name="data" id="arr"> 3 <li>{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </volist> 5 </ul>
PS:這里的 name="data"中的 data 是控制器給模版定義的數據變量,要對應;這里
的 id="arr"中的 arr 是將要遍歷循環的數組名,可以自定義。
得到的結果為在瀏覽器中輸出為:

offset 從第幾條開始,起始值 0,length 共多少條
1 <ul> 2 <volist name="data" id="arr" offset="2" length="10"> 3 <li>{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </volist> 5 </ul>
mod 求當前余數,當前 index 除以 2 余 1,輸出偶數
1 <ul> 2 <volist name="data" id="arr" mod="2"> 3 <eq name="mod" value="1"> 4 <li>{$arr.id}--${$arr.user}--${$arr.email}</li> 5 </volist> 6 </ul>
因為數據庫開始是從0開始,所以除以2余1的為偶數
沒有數據的情況下使用 empty 填充
1 <ul> 2 <volist name="data" id="arr" empty="沒有任何數據"> 3 <li>{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </volist> 5 </ul>
empty 屬性不支持 HTML 直接輸入,但可以通過變量輸出
但可以在 Home/controller/UserController.class.php 中設定:
1 class UserController extends Controller { 2 public function index() { 3 $user = M('User1'); 4 $this->assign('empty','<span style="color:red">沒有任何數據</span>'); 5 $this->assign('data',$user->select()); 6 $this->display(); 7 } 8 }
然后在 View/User/index.html 中的代碼為:
1 <ul> 2 <volist name="data" id="arr" empty="$empty"> 3 <li>{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </volist> 5 </ul>
注意這時的ematy的屬性是從 Home/controller/UserController.class.php 中繼承過來的 , empty="$empty" 。
通過 key 輸出循環遍歷的變量
1 <ul> 2 <volist name="data" id="arr" key="k"> 3 <li>{$k}--{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </volist> 5 </ul>
輸出的結果為:

沒有指定 k,也可以用 i 變量輸出
1 <ul> 2 <volist name="data" id="arr" > 3 <li>{$i}--{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </volist> 5 </ul>
結果和通過 key 輸出循環遍歷的變量的結果是一樣的。
key 變量,可以直接輸出索引值,從 0 開始
1 <ul> 2 <volist name="data" id="arr" > 3 <li>{$key}--{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </volist> 5 </ul>
Foreach 標簽和 Volist 標簽類似,只不過 Foreach 標簽更加簡單,沒有額外屬性。
1 <ul> 2 <foreach name="data" item="arr" > 3 <li>{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </foreach> 5 </ul>
主要注意的是,這里是 item="arr" ,不再是 id="arr"
foreach只支持 key 屬性,但{$key}變量支持,兩個的結果是一樣的
支持{$key}變量
1 <ul> 2 <foreach name="data" item="arr" > 3 <li>{$key}--{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </foreach> 5 </ul>
支持key屬性
1 <ul> 2 <foreach name="data" item="arr" key="k" > 3 <li>{$k}--{$arr.id}--${$arr.user}--${$arr.email}</li> 4 </foreach> 5 </ul>
For標簽就是簡單的循環標簽
從 1 到 99 循環
1 <for start="1" end="100"> 2 {$i}<br/> 3 </for>
這里不是1到100,而是1到99
除了start和end必須值,還有三個可選值。comparison是大于還是小于,默認值為lt
(<);name是循環變量名,默認值為i;step是步進值,默認為1。
1 <for start="1" end="100" comparison="lt" step="3" name="b"> 2 {$b}<br/> 3 </for>
三.其他標簽
ThinkPHP 模版中還有一些其他標簽。
在模版中定義變量,value 值可以為變量($user)或系統變量($Think.get.user)
1 <assign name="var" value="124" /> 2 {$var}
這時輸出結果為: 124 ;
$Think.get.user 可以從url的最后中的user的值來獲取,這個在原先講過,這里就不贅述了。
在模版中定義常量,value 值可以為變量($user)或系統變量($Think.get.user)
1 <define name="MY_NAME" value="563" /> 2 {$Think.const.MY_NAME}
這時輸出結果為: 563 ,需要注意的是,這時候不能在輸出的時候直接用 $MY_NAME ,直接用這個的話沒有任何輸出結果。
import 導入標簽可以智能的導入 js 和 css 文件
常規引入方法,在 View/User/index.html 中的引入為:
1 <html> 2 <head></head> 3 <script type="text/javascript" src="__PUBLIC__/js/index.js"></script> 4 <link rel="stylesheet" type="text/css" href="__PUBLIC__/css/index.css"/> 5 <body> 6 </body> 7 </html>
這里的 __PUBLIC__ 就是主目錄下的public文件夾,如下圖:

使用 import 導入,js 和 css 是目錄
1 <html> 2 <head></head> 3 <import type="js" file="js.index" /> 4 <import type="css" file="css.index" /> 5 <body> 6 </body> 7 </html>
file里的第一個js是public下的js文件夾,后面那個index是js文件的名字,不用帶上js這個后綴名
使用 import 導入,basepath 修改默認路徑
1 <html> 2 <head></head> 3 <import type="js" file="js.index" basepath="./Common" /> 4 <import type="css" file="css.index" basepath="./Common" /> 5 <body> 6 </body> 7 </html>
load 加載標簽可以智能的加載 js 和 css 文件
1 <html> 2 <head></head> 3 <load href="__PUBLIC__/js/index.js" /> 4 <load href="__PUBLIC__/css/index.css" /> 5 <body> 6 </body> 7 </html>
系統還提供了專用 js 和 css 標簽,專門用于加載
1 <html> 2 <head></head> 3 <js href="__PUBLIC__/js/index.js" /> 4 <css href="__PUBLIC__/css/index.css" /> 5 <body> 6 </body> 7 </html>
PHP 代碼可以和標簽在模版文件中混合使用,可以在模版文件里面書寫任意的 PHP 語句代碼。
使用php標簽:
1 <html> 2 <head></head> 3 4 <body> 5 6 <php> 7 $a=1; 8 $b=2; 9 echo $c=$a+$b; 10 </php> 11 12 </body> 13 </html>
使用php語法:
1 <html> 2 <head></head> 3 4 <body> 5 6 <?php 7 $a=1; 8 $b=2; 9 echo $c=$a+$b; 10 ?> 11 12 </body> 13 </html>
這兩個輸出的結果都是直接為“3”。
如果想原樣輸出標簽極其內容,可以使用 literal 標簽
1 <html> 2 <head></head> 3 4 <body> 5 6 <literal> 7 <php>echo 123;</php> 8 </literal> 9 10 </body> 11 </html>
這時輸出結果為: echo 123; 為什么沒有連 <php></php> 一起輸出呢?因為這里 <php></php> 是相當于標簽來用的。
文章列表
留言列表
