程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> ThinkPHP框架之視圖

ThinkPHP框架之視圖

編輯:關於PHP編程

一、視圖

 

1、 視圖組件的構成:

 

1) 視圖類

 

View類

Smarty類

 

2) 模板

 

Tpl/項目/模塊/***.html

 

視圖類負責讀取模板內容,並實現字符串替換,最終再輸出給用戶

 

2、 模板定義

 

默認的模板文件定義規則:

 

模板目錄/[分組名/]模塊名/操作名+模板後綴

 

TMPL_TEMPLATE_SUFFIX

 

一般情況下,模板的後綴大體使用以下幾種:

 

.html

.htpl

.tpl

 

3、 分隔符

 

因為每個模板設計者的習慣不同,有的人習慣使用“{}” 有的人使用<{}>   {**}

 

在配置文件中,可以設置以下兩個配置選項,表示配置模板的分隔符

 

 'TMPL_L_DELIM'=>'<{',

 'TMPL_R_DELIM'=>'}>',

 


 

4、 模板賦值以及輸出

 

1)    $this->assign(‘模板變量名’,變量);

         $var = '手機';
       
        $this->assign('var',$var);
       
        $this->display('test');


2)    $this->assign(數組變量);

      <{$數組元素下標}>

 <!-- 直接用數組的下標來取數據 -->
    <{$price}><br/>
    <{$address}><br/>

        $var = '手機';
       
        $this->assign('var',$var);
       
        $arr['price'] = 33.3;
        $arr['address'] = '北京';
        $this->assign($arr);
        $this->display('test');
    }

 

 

3)$this->display(‘操作名’)

       當前模塊下的指定操作名.html模板

4)$this->display(‘模塊:操作名’); //模板是可以跨模塊調用的


       引用指定模塊下的指定的操作名.html模板

5)$this->display(‘操作’,’輸出編碼’,’輸出類型’);

 


       //跨模塊輸出
        $this->display('User:login','utf-8','text/html');

 

 

 

5、 模板替換(模板常量)

 在項目中經常要引用css、js、圖片的資源需要引用。


__PUBLIC__:當前網站的公共目錄

__APP__: 當前項目的URL地址

 __GROUP__:當前分組的URL地址

__URL__:當前模塊的URL地址

__ACTION__:當前操作的URL地址

 

在tp中的模板裡,可以使用以上模板常量,它們表示不同的字符串,一般在需要引用url時,可以用到以上常量

 

默認來講:如果我們訪問:

 

Localost/index.php/home/product/test,這時模板如使用了__PUBLIC__模板常量,那麼它的值指向了apache的htdocs目錄下,但是如果我們有多項目,這時會有沖突,如何解決?

 

解決之道:

 

1) 修改配置文件

 

在配置文件中,可以配置一個叫TMPL_PARSE_STRING選項,它可以定義在模板使用的模板常的值

 


 

然後,在模板中,可以這樣來引用當前項目下的資源文件:

 


 

2) 配置虛擬主機

 

打開host文件:


打開httpd.conf

 

 


 

將上面的配置選項之前的#去掉

 

打開httpd-vhosts.conf文件,添加新的虛擬主機設置

 


 

重啟apache

 

Localhost---àapache/htdocs/

 

Tp.com-----àapache/htdocs/tp/

 

6、 獲取內容

 

$this->fetch();

 


 

Display:讀取模板、替換內容、輸出

Fetch:讀取模板、替換內容、返回字符串(主要用於生成靜態頁)

 

 

二、模板

 

1、 模板注釋:

 

l  {/* 注釋內容 */ }

 

l  {// 注釋內容 }

 

Tp中的模板注釋主要是給模板設計者或程序設計者來看的

 

2、 變量輸出:

 

程序向模板中賦值

 

普通變量

       $name

數組變量

       $row

對象變量

       $obj

 

代碼示例:

 

Php程序:

 


 

模板程序:

 


 

 

 

 

 

 

 

3、 系統變量   (模板中的系統變量)

 

l  $Think.server        $_SERVER

l  $Think.get               $_GET

l  $Think.post             $_POST

l  $Think.request         $_REQUEST

l  $Think.cookie          $_COOKIE

l  $Think.session         $_SESSION

l  $Think.config          讀取配置文件      

 

 


 

4、 使用函數

 

l  格式

 

       {$name|fn1|fn2=arg1,arg2,###}

 


 

5、 默認值

 

{$變量|default="默認值"}

 


 

6、 運算符

 

l  +              {$a+$b}

l  -        {$ab}

l  *              {$a*$b}

l  /        {$a/$b}

l  %             {$a%$b}

l  ++            {$a++} 或  {++$a}

l  --              {$a--}  或 {--$a}

 


 

7、 內置標簽

 

<{$title}>

<標簽>

l  閉合標簽

<br />

l  開放標簽

<div></div>

 

8、 包含文件

 

<include file="模板文件名" />

 

是基於項目的入口文件位置。

 

./Tpl/Admin/Public/header.html

 

我們將網頁公共部分放到header.html和footer.html兩個公共模板頁中,在主頁中使用include進行引用

 


 

 

 

上面在引用文件時,路徑過長,如何解決?

 

<include  file=“模塊名:操作名” title="Think” />

表示引用當前項目下指定模板裡的指定的模板

 

 

 


 


 

使用include去包含了”Public模塊”下的footer和header文件

 

 

Include標簽允許向模板傳遞參數

 


 

模板代碼:


 

9、 導入文件

 

在tp中,提供了幾個標簽實現(簡化)對資源文件的引用

 

<js href="__PUBLIC__/Js/Common.js" />

<css href="__PUBLIC__/Css/common.css" />

<load href="__PUBLIC__/Js/Common.js" />

 

l  格式:

       <importtype=‘type’ file=‘file’ />

 

       file(必須):資源文件

       type(可選):資源文件類型,默認為js

 

       起始路徑是網站的Public(__PUBLIC__)目錄

       采用命名空間方式

       目錄.目錄.文件名

 


 

10、             volist標簽

 

用於遍歷數組元素

 

l  格式:

 

       <volist name="list" id="vo">

              {$vo.id}

              {$vo.name}

       </volist>

 

l  name(必須):要遍歷的數組變量

l  id(必須):當前數組元素

l  offset:     要輸出數據的offset

l  length:    輸出數據的長度,需要指定offset

l  key: 循環索引   key的值默認為 i

 


 

 

11、             foreach標簽

 

用於遍歷數組變量

 

語法:

<foreachname="list" item="vo" >

              {$vo.id}

              {$vo.name}

</foreach>

 

Name :要遍歷的數組變量

Item:用於保存當前元素的變量名

 

如果有特殊需求,使用volist,否則使用foreach

 


12、             for標簽

 

<forstart="1" end="100">

              {$i}

</for>

 

屬性:

l  start(必須):循環變量開始值

l  end(必須):循環變量結束值 (不包括)

l  name(可選):循環變量名,默認值為i

l  step(可選):步進值,默認值為1

 


 

13、             switch標簽

 

l  格式:

<switch name="變量" >

<case value="值1" break="0或1">

              輸出內容1

</case>

<case value="值2">輸出內容2</case>

<default />默認情況

</switch>

 


 

14、             empty標簽

 

l  <empty name="name">name為空值</empty>

 

15、             assign標簽

 

l  <assign name="var" value="123" />

16、             if標簽

 

l  if

l  elseif

l  else

 


 

判斷時,需要使用以下連接符

 

l  eq或者 equal:等於

l  neq 或者notequal:不等於

l  gt:大於

l  egt:大於等於

l  lt:小於

l  elt:小於等於

l  heq:恆等於

l  nheq:不恆等於

 

17、             使用php代碼

 

1)<php>echo “hello”;</php>

2)<?php echo “think”;    ?>


 

在配置文件中,有一個選項可以控制第二種方法是否可用


TMPL_DENY_PHP 可以禁用第二種方法

 

建議:盡量少在模板中使用php代碼


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved