TP笔记3、视图

1 视图

1.1 视图渲染(display和fetch)

1.1.1 display
  • 格式:display($template=’ ',$charset=‘ ’,$contentType=‘ ’,$content=‘ ’,$prefix=‘ ’)
参数说明
template指定模板文件
charset编码
contentType输出类型
content输出内容
prefix模板缓存前缀
  1. 方式一:不传递任何参数
    对于display方法不传递任何参数,TP会自动定位到当前控制下的对应的同名方法的模板中
    在这里插入图片描述
  2. 方式二:当前控制器下的具体模板
    在这里插入图片描述
  3. 方式三:其他控制器下的模板在这里插入图片描述
    注:这里是访问了View/Goods2/add.html文件
  4. 方式四:[模块@][控制器:][操作]
class GoodsController extends Controller{
    public function index(){
        //1、使用display加载模板输出 但是不指定任何参数
        //$this->display();
        //2、指定当前控制器下的模板
        //$this->display('add');
        //3、指定其他控制器下的模板
        //$this->display('Goods2:add');
        //4、指定其他模块的模板
        $this->display('Admin@Goods:add');
    }
}
  1. 完整的模板文件名
$this->display('./add.html');

注:". /"指的是根目录(在我的项目里根目录是TPdemo)#

1.1.2 display与fetch的区别
  • 两个方法都一模一样
  • display:获取要输出的内容,直接输出
  • fetch:获取要输出的内容,但不会自动输出,一般与show方法结合,先用fetch获取,再用show输出

1.2 模板替换

1.2.1 TP内置的模板规则
参数说明
ROOTROOT会替换成当前网站的地址(不含域名)
APP替换当前应用的url地址(不含域名)
MODULE替换当前模块的url地址(不含域名)
CONTROLLER替换当前控制器的url地址(不含域名)
ACTION替换当前操作的url地址(不含域名)
SELF替换当前页面url
PUBLIC替换当前网站的公共目录 通常是/Public/
PUBLIC_ADMIN自定义的模板替换
1.2.2 自定义的模板规则
return array(
	//'配置项'=>'配置值'
	//指定自定义的配置项
	'TMPL_PARSE_STRING'=>array(
		__PUBLIC_ADMIN__=>'/Public/Admin'
	),
);

1.3 模板变量赋值与显示

1.3.1 方式一

$this->assign(‘name’,$value);

1.3.2 方式二

$this->data=$data;

1.4 系统变量

  • 系统变量可以在模板中直接使用,不需要赋值。可以输出TP内置配置项信息、TP或PHP内置常量、PHP超全局数组
  • 系统变量一般{$Think开头
在testSys.html中写入如下代码:
输出TP的配置项:{$Think.config.DEFAULT_MODULE}<br>
输出TP的内置常量:{$Think.CONTROLLER_NAME}<br>
输出PHP的配置项:{$Think.PHP_VERSION}<br>
输出PHP的超全局数组:{$Think.get.id}<br>

在这里插入图片描述

1.5 模板函数

  • 在模板中使用某个函数(PHP内置函数或TP公共函数)将具体的数据转换成其他格式
在testFunc.html中写入:
1、使用PHP原生代码实现转换操作:<? php echo date('Y-m-d H:i:s',$time):?><br>
2TP模板引擎实现转换:{$time|date='Y-m-d H:i:s',###}<br>
3、特殊写法:{:date('Y-m-d H:i:s',$time)}<br>
4、使用U函数生成连接地址:{:U('index','id=4')}<br>
在GoodsController.class.php中写入:
public function testFunc(){
        $time=time();
        $this->assign('time',$time);
        $this->display();
    }

在这里插入图片描述

1.6 模板运算符

在calculator.html中写入:
a+b={$a+$b}<br>
a-b={$a-$b}<br>
a*b={$a*$b}<br>
a/b={$a/$b}<br>
数组运算:{$data['price']*$data['num']   }
在calculator.html中写入:
public function calculator(){
        $this->assign('a',10);
        $this->assign('b',2);
        $data=array('price'=>100,'num'=>3);
        $this->assign('data',$data);
        $this->display();
    }

在这里插入图片描述
注意:数组运算不再支持点语法

1.7 内置标签

1.7.1 foreach标签
  • 格式:
<foreach name="list" item="vo" key="k">
    {$k}|{$vo.id}:{$vo.name}
</foreach>
参数说明
name指定数据
item每次循环的临时变量
key每次循环的下标名称
在testForeach.html中写入:
<foreach name="data" item="vo" key="k">
    下标:{$k}----name:{$vo.name}----version:{$vo.version}<br>
</foreach>
在calculator.html中写入:
public function testForeach(){
        $data=array(
            'a'=>array('name'=>'tp1','version'=>5.0),
            'b'=>array('name'=>'tp2','version'=>3.2)
        );
        $this->assign('data',$data);`<if condition="{$name eq 1} OR {$name gt 100}">value1
    <elseif condition="$name eq2" />value2
        <else />value3
</if>`
        $this->display();
    }

在这里插入图片描述

1.7.2 if标签
  • 格式:
<if condition="{$name eq 1} OR {$name gt 100}">value1
	<elseif condition="$name eq2" />value2
	<else />value3
</if>
参数说明
eq或equal等于
neq或notequal不等于
gt大于
egt大于等于
lt小于
elt小于等于
heq恒等于
nheq不恒等于
  • 举例:
<if condition="$num eq 7">
    num等于7
    <elseif condition="($num gt 0) and ($day lt 6)" />
    num大于0,小于6
    <else />
    num未知
</if>
1.7.3 比较标签
  • 格式:
<比较标签 name="变量" value="值">
    内容
</比较标签>
  • 比较标签常用参数:
参数说明
eq或equal等于
neq或notequal不等于
gt大于
egt大于等于
lt小于
elt小于等于
heq恒等于
nheq不恒等于
<eq name="num" value="2">
    num等于2
    <else />
    num不等于2
</eq>
1.7.4 volist标签
  • 格式:
<volist name="list" id="vo" mod="2" empty="没有内容" offset="2" length="2" key="keys">
    内容
</volist>
参数说明
name循环变量名
id循环的临时变量名
mod
empty当循环变量为空时,显示empty的内容(不支持empty内容)
offset偏移量(从哪个元素开始循环)
length循环次数
key指定下标变量名称
volist标签实现基本功能:<BR>
<volist name="data" id="vo">
    循环原始下标:{$key}----{$vo.name}<br>
</volist>
<hr>
volist标签实现偏移量和长度:<BR>
<volist name="data" id="vo" offset="2" length="2">
    循环原始下标:{$key}----{$vo.name}<br>
</volist>
<hr>
volist标签指定循环下标:<BR>
<volist name="data" id="vo" offset="2" length="2" key="keys">
    循环原始下标:{$key}----指定下标:{$keys}----{$vo.name}<br>
</volist>
<hr>
volist标签指定mod:<BR>
<volist name="data" id="vo" mod="3">
    循环原始下标:{$key}----指定mod:{$mod}----{$vo.name}<br>
</volist>

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值