ThinkPHP学习笔记(二):ThinkPHP框架的模板技术

1)建立项目模板

Lib/Action/IndexAction.class.php 里的方法 index 输出时对应的模板文件为 Tpl/Index/index.html,详见模板输出

// 输出时使用 display 方法
$this->display();

// 在该方法里输出另外一个模板文件使用 Tpl/Index/test.html
$this->display('Index/test');

2)模板的赋值和输出

模板变量赋值可以使用 assign 或 $this 方法;

// assign 使用方法
$name = 'visionz';
$date = date("Y-m-d");
$this->assign('name', $name)->assign('sex', 'man')->assign('today', $date);

// $this 使用方法
$this->name2 = $name;

// 模板变量输出输出
<?php
    echo $name . '<br />';
    echo $sex . '<br />';
    echo $today . '<br />';
    echo $name2 . '<br />';
?>

3)ThinkPHP模板引擎之变量输出和运算

使用自带的模板引擎对变量进行输出,则不需要加<?php ?>

// 控制器变量赋值
$me['name'] = 'visionz';
$me['age'] = '25';
$me['sex'] = 'boy';
$this->assign('me', $me);

// 视图变量输出
{$me['name']} <br />           // visionz
{$me.name} <br />              // visionz
{$me.sex|default='man'} <br>   // 默认'man',赋值后'boy'

// 视图变量运算
{$me['age'] + 1}				// 26(写成{$me.age}无法成功运算)

4)ThinkPHP模板引擎之调用函数和系统参数

模板变量的函数调用格式为:{$varname|function1|function2=arg1,arg2,### }

// 控制器变量赋值
$this->now=time();

// 视图变量输出
{$me['name']|md5|substr=0,5} <br />        //75283 
{$now|date='Y-m-d H:i:s', ###} <br />  //2016-12-14 18:57:53 
{$Think.now} <br />                        //2016-12-14 6:57 pm 
{$Think.version} <br />                    //3.1.3 
{$Think.server.http_host}              //192.168.2.110

5)ThinkPHP模板引擎之volist和foreach循环

Volist标签主要用于在模板中循环输出数据集或者多维数组,详见Volist标签
foreach标签也是用于循环输出,详见Foreach标签

// 控制器变量赋值
$person = array(
    1 => array('name'=>'Jack', 'age'=>'18'), 
    2 => array('name'=>'Tom', 'age'=>'19'), 
    3 => array('name'=>'Peter', 'age'=>'20'), 
    4 => array('name'=>'Mary', 'age'=>'21'), 
    );
$this->assign('person', $person);

// 视图变量输出
<volist name='person' id='data' offset='1' length='2' empty='我没数据'>
{$data['name']}------{$data['age']}<br />
</volist>
<br />
<foreach name='person' item='data'>
{$data['name']}------{$data['age']}<br />
</foreach>

// 显示
Tom------19
Peter------20

Jack------18
Tom------19
Peter------20
Mary------21

6)ThinkPHP模板引擎之FOR循环

For标签用于实现for循环,详见For标签
用法:<for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" ></for>

// 比较
eq ==;   neq !=;   gt >;   egt >=;   lt <;   elt <=;   heq ===;   nheq !==;

// 模板使用
<for start='1' end='10' comparison='elt' name='k'>
{$k}<br />
</for>

7)ThinkPHP模板引擎之IF判断

if标签可用来定义复杂的条件判断,详见IF标签

// elseif 和 else 后面必须加上闭合标签“/”,否则会导致错误
<if condition="$num gt 10"> num 大于 10 
<elseif condition="$num lt 10" /> num 小于 10
<else /> num 等于 10
</if>

8)ThinkPHP模板引擎之Switch判断

模板引擎支持Switch标签,详见Switch标签
用法:

<switch name="变量" >
<case value="值1" break="0或1">输出内容1</case>
<case value="值2">输出内容2</case>
<default />默认情况
</switch>

实例:

// 控制器变量赋值
$name = 'xiaohuang';
$this->assign('name', $name);

// 视图变量输出
<switch name="name">
    <case value="laoshi">小明,out</case>
    <case value="xiaohong|xiaohuang">小明,you out</case>
    <default />out
</switch>

// 显示
out

9)ThinkPHP模板引擎之比较标签

模板引擎提供了丰富的判断标签,详见比较标签
用法:<比较标签 name="变量" value="值">内容</比较标签>

// 控制器变量赋值
$this->assign('num', 11);

// 视图变量输出
<neq name="num" value="12">num != 12</neq><br />
<eq name="num" value="10">num = 10<else />num != 10</eq><br />
<compare name="num" value="11" type="eq">num = 11<else />num != 11</compare><br />

// 显示
num != 12
num != 10
num = 11

10)ThinkPHP模板引擎之区间标签

区间标签用于判断某个变量是否在某个范围之内,包括 in、notin、between、notbetween、range几种,详见范围判断标签
用法:

<in name="id" value="1,2,3">输出内容1</in>
<notin name="id" value="1,2,3">输出内容2</notin>
<in name="id" value="1,2,3">输出内容1<else/>输出内容2</in>

<between name="id" value="1,10">输出内容1</between>
<notbetween name="id" value="1,10">输出内容1</notbetween>

// range 的type只能填 in 或 notin,不能写 between
<range name="id" value="1,2,3" type="in">输出内容1</range>

11) ThinkPHP模板引擎之三元运算符

模板可以支持三元运算符,详见三元运算
用法:

// 三元运算符中暂时不支持点语法。
{$status?'正常':'错误'}
{$info['status']?$info['msg']:$info['error']}

12)ThinkPHP模板引擎之案例实战

// 控制器变量赋值
$person = array(
    1 => array('name'=>'Jack', 'age'=>'16'), 
    2 => array('name'=>'Tom', 'age'=>'17'), 
    3 => array('name'=>'Peter', 'age'=>'28'), 
    4 => array('name'=>'Mary', 'age'=>'19'), 
    );
$this->assign('person', $person);

// 视图变量输出
<foreach name="person" item="data">
    <egt name="data['age']" value="18">{$data.name}已经成年了<else />{$data.name}还是个孩子</egt> <br />
</foreach>

// 显示
Jack还是个孩子
Tom还是个孩子
Peter已经成年了
Mary已经成年了

在模板里可以用<?php ?>输出PHP语句,但是不推荐使用,作为代替可以使用<php></php>进行输出;

<php>
echo $person[1]['name']
</php>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值