1、视图概述

将具体的视图模板进行输出显示,有两个方法
display:获取具体要输出的内容,然后直接输出
fetch:获取具体要输出的内容,但不会自动输出

2、display的使用(输出模板内容)

display()
见手册

  • 1、Home/Controller/创建GoodsContronller
<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function index(){//使用display加载模板输出,但不指定任何参数$this->display();//在视图控制器目录Goods下指定一个特定的html文档$this->display('anotherModel');//指定其他控制器下的模板(MyIndex控制器下的mymodel模板文件)$this->display('MyIndex:mymodel');}}
?>
  • 2、在View/下创建goods目录及该目录下创建index模板文件,随便输入点啥
  • 3、访问http://127.0.0.1/ex01tp/index.php/Home/Goods/index显示默认模板页内容

也可以跨模块调用admin模块

class GoodsController extends Controller{public function index(){//跨模块的模板调用admin是模块$this->display('Admin@Index:news');//使用完整的模板名称$this->display('./xxx.html');}
}

目录结构如下:

2、fetch获得模板内容但不输出

<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function index(){}public function testf(){$str=$this->fetch("index");echo $str;}}
?>

3、模板替换

  • 1、创建资源存储目录Public,如入口文件同级
  • 2、创建样式表文件add.css
 div{ width:100px; height:40px; lineheight:40px; border:1px solid red}
  • 3、修改模板使用样式表文件
<link rel="stylesheet" type="text/css"  href="../../../Public/add.css">
  • 4、使用模板替换批量替换

4、模板替换规则

1、默认的模板替换规则

 __ROOT__: ROOT会替换成当前网站的地址(不含域名)<br>__APP__: APP会替换成当前应用的URL地址 (不含域名)<br>__MODULE__:MODULE会替换成当前模块的URL地址 (不含域名)<br>__CONTROLLER__(__或者__URL__ 兼容考虑): CONTROLLER会替换成当前控制器的URL地址(不含域名)<br>__ACTION__:ACTION会替换成当前操作的URL地址 (不含域名)<br>__SELF__: SELF会替换成当前的页面URL__PUBLIC__:PUBLIC会被替换成当前网站的公共目录 通常是 /Public/<br>

2、自定义模板替换规则
在config文件中定义关联数组的形式进行指定

5、模板变量的赋值与现实

赋值操作一定要在渲染模板之前,因为渲染完成后再赋值是没有意义的

  • 1、使用assign()方法指定

assign(变量名字符,变量)
第一个参数是模板中使用的变量名称,
第二个参数是存储数据的变量名
如:

  $this->assign('msg',$msg);
  • 2、使用直接赋值属性的方式指定
    直接给相应属性赋值
$this->data=$data;
<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{//实现模板的赋值操作,一定要在渲染模板之前public function testshow(){//模拟下动态数据,变量和数组$msg="hello thinkphp";$data=array('name'=>'tp','version'=>3.2);//实现赋值方式一:$this->assign('msg',$msg);//实现赋值方式二:$this->data=$data;//渲染模板$this->display('add');}
}
?>
  • 3、显示相应的数据

·使用tp的模板引擎显示具体msg数据内容

//输出单一变量
{$msg}
//输出数组或对象
{$data.name}
{$data.version}
//对象使用冒号:
{对象名:属性名}
{$data:name}

·使用php原生方式显示具体数据内容

//使用tp模板引擎
<div>{$msg}</div>
<div>{$data.name}</div>
<div>{$p1:name}</div>//对象访问方式未实现
//使用php原生数据呈现方式
<div><?php echo $msg?></div>
<div><?php echo $data['name']?></div>
<div><?php echo $p1->name?></div>//对象方式未能成功

6、系统变量

内置变量就是tp内置的一个变量,可以在模板中直接使用,不需要进行任何的赋值操作。
模板中的系统变量都是{$Think.}开头

  • 1、创建方法渲染视图
<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function testsystem(){//渲染模板$this->display('sysmuban');}}
?>
  • 2、在模板文件中引用数据
 <body><div>TP配置项:{$Think.config.DEFAULT_MODULE}</div><div>tp内置常量:{$Think.CONTROLLER_NAME}</div><div>PHP内置常量:{$Think.PHP_VERSION}</div><div>PHP超全局数组:{$Think.get.id}</div>
</body>

7、模板函数

使用某一个函数将具体的数据转换成为其他格式,可以是使用tp的内置函数,也可以使用php的原生函数

  • 1、创建模板方法
<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function testfunc(){$time=time();$this->assign('time',$time);//渲染模板$this->display('testfun');}}
?>
  • 2、创建模板文件引用数据
    四种写法:
    tp引擎写法
    php原生时间写法
    特殊写法:
    u函数写法:
<body><div>tp引擎写法:{$time | date='Y-m-d H:i:s',###}</div><div>php原生时间写法:<?php echo date('Y-m-d H:i:s',$time)?></div><div>特殊写法:{:date('Y-m-d H:i:s',$time)}</div><div>u函数写法,生成连接地址:{:U('index','id=4')}</div>
</body>

8、模板运算符

  • 1、基本运算符
    支持+ - * / % ++ –
    创建模板方法
<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function jiusuan(){$this->assign('a',10);$this->assign('b',2);//渲染模板$this->display('jisuan');}}
?>

模板中获取引用

<body><div>加法计算:{$a+$b}</div><div>减法计算:{$a-$b}</div><div>×法计算:{$a}x{$b}={$a*$b}</div><div>除法计算:{$a/$b}</div><div>模计算:{$a/$b}</div><div>++计算:{++$a}</div><div>--计算:{--$b}</div>
</body>
  • 2、数组的运算
    创建模板方法
 <?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function jiusuan(){$this->assign('a',10);$this->assign('b',2);$data=array('price'=>100,'num'=>3);$this->assign('data',$data);//渲染模板$this->display('jisuan');}
}
?>

模板中获取引用
不能使用tp引擎的点句法,而要使用php原生写法

<body><div>总价为:{$data['price']*$data['num']}</div></body>

9、tp内置标签-foreach

foreach是一个成对标签
foreach标签类似与volist标签,只是更加简单,没有太多额外的属性,name表示数据源 item表示循环变量。

格式如下:

<foreach name="list" item="vo" >{$key}|{$vo.id}:{$vo.name}
</foreach>

1、创建模板方法

<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function testforeach(){//创建一个二维数组$data=array('a'=>array('name'=>'tp1','version'=>'5.0'),'b'=>array('name'=>'tp2','version'=>'3.2'));$this->assign('data',$data);//渲染模板$this->display('testforeach');}}
?>

2、模板数据引用
下标输出的事数组的key,因此需要一个关联数组

<body><div><foreach name='data' item='myitem' key="k">下标:{$k}--值:{$myitem.name}--{$myitem.version}<br></foreach></div>
</body>

结果:
下标:a–值:tp1–5.0
下标:b–值:tp2–3.2

10、tp内置标签-if

也是成对标签,condition后的运算符是用英文的,不支持算术运算符
格式

<if condition="($name eq 1) OR ($name gt 100) "> value1
<elseif condition="$name eq 2"/>value2
<else /> value3
</if>

if标签指定具体的判断条件时,可以通过使用and和or来指定具体的条件的“并且”和“或者关系”,在指定具体的比较条件时是不能直接使用=,>,<的运算符。其中
eq:=
gt:>
lt:<
egt:大于等于
elt:小于等于
heq:恒等于
nheq:不恒等于

  • 1、创建模板方法
<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function testforeach(){//创建一个二维数组$data=array('a'=>array('name'=>'tp1','version'=>'5.0'),'b'=>array('name'=>'tp2','version'=>'3.2'));$this->assign('data',$data);$this->assign('day',2);$this->assign('month',12);//渲染模板$this->display('testforeach');}}
?>
  • 2、模板中应用数据
<body><div><foreach name='data' item='myitem' key="k">下标:{$k}--值:{$myitem.name}--{$myitem.version}<br></foreach></div><div><if condition="$day eq 7">开始学习<elseif condition="($day gt 1) and ($day lt 6)"/>正常上课<else/>踏实睡觉</if></div>
</body>

结果是:正常上课

11、tp内置标签-比较标签

eq:=
gt:>
lt:<
egt:大于等于
elt:小于等于
heq:恒等于
nheq:不恒等于

格式:

<比较标签 name="变量" value="值">
内容
</比较标签>

如:

<eq name="month" value="12">//这里的month是不需要美元符$的快要过年了<else/>还有大把时光</eq>

12、tp内置标签-volist标签

volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出
格式

<volist name="list" id="data" ,mod="2" empty="没有内容" offset="2" length="2" key="keys">
{$data.id}:{$data.name}<br/>
</volist>

name:需要循环的变量名称
id:每次循环的临时变量,同foreach的item
Mod:每次循环的过程都会增加一个mod变量,对于该变量的值从0到设置的值轮询出现,使用mod可以实现隔行换色效果
empty:循环变量为空时,显示empty设置的内容(不能直接使用html代码)
offset:指定偏移量,指定具体从哪个元素开始循环
length:指定具体的循环次数
key:指定具体循环的下标变量名称。

  • 1、创建模板方法
<?php
namespace Home\Controller;
use Think\Controller;class GoodsController extends Controller{public function testforeach(){//创建一个二维数组$data=array('a'=>array('name'=>'tp1','version'=>'5.0'),'b'=>array('name'=>'tp2','version'=>'3.2'),'c'=>array('name'=>'tp3','version'=>'6.0'),'d'=>array('name'=>'tp4','version'=>'7.2'),'e'=>array('name'=>'tp5','version'=>'8.0'),'f'=>array('name'=>'tp6','version'=>'9.2'),);$this->assign('data',$data);//渲染模板$this->display('testforeach');}}
?>
  • 2、模板应用数据
<body><div>使用volist:<br><volist name="data" id="vo">{$key}--{$vo.name}--{$vo.version}<br></volist></div><div>---------</div><div><volist name="data" id="vo" offset='2' length='3'>{$key}--{$vo.name}--{$vo.version}<br></volist></div><div>---------</div><div><volist name="data" id="vo" offset='2' length='3' key='keys'>{$key}--{$keys}--{$vo.name}--{$vo.version}<br></volist></div><div>---------</div><div><volist name="data" id="vo" >{$key}--{$mod}--{$vo.name}--{$vo.version}<br></volist></div>

最终结果:

使用volist:
a--tp1--5.0
b--tp2--3.2
c--tp3--6.0
d--tp4--7.2
e--tp5--8.0
f--tp6--9.2
---------
c--tp3--6.0
d--tp4--7.2
e--tp5--8.0
---------
c--1--tp3--6.0
d--2--tp4--7.2
e--3--tp5--8.0
---------
a--0--tp1--5.0
b--1--tp2--3.2
c--0--tp3--6.0
d--1--tp4--7.2
e--0--tp5--8.0
f--1--tp6--9.2

传智播客PHP笔记05-thinkphp框架-视图渲染、display,fetch,模板替换,模板变量的赋值与实现,系统变量,模板函数,模板运算符,foreach,if,比较标签,volist标签相关推荐

  1. 传智oracle,传智播客Oracle笔记

    Oracle笔记 oracle 传智播客_ORACLE经典视频教程 笔记(2008-09-09 15:32:34) 标签:it 分类:Oracle 1.3个默认用户 sys chang_on_inst ...

  2. Day7:Vue入门学习——传智播客学习笔记【微服务电商】

    本节依旧是前端内容,但还是了解一下基础的入门知识 学习目标 会创建Vue实例,知道Vue的常见属性 会使用Vue的生命周期的钩子函数 会使用vue常见指令 会使用vue计算属性和watch监控 会编写 ...

  3. jQuery基础(传智播客学习笔记)

    JQuery 基础: 1. 概念: 一个JavaScript框架.简化JS开发* jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码 ...

  4. 传智播客自学笔记第9天(待编辑)

    一.访问修饰符 访问修饰符:public   protected   default  private public        protected       default      priva ...

  5. Day2:SpringCloud入门学习——传智播客学习笔记【微服务电商】

    SpringCloud 0.学习目标 ·了解系统架构的演变 ·了解RPC与Http的区别 ·掌握HttpClient的简单使用 ·知道什么是SpringCloud ·独立搭建Eureka注册中心 ·独 ...

  6. 传智播客python笔记_python传智播客笔记--第十天:隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写...

    封装,继承,多态 隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写 -**************************************************** ...

  7. 在Android应用中使用Pull解析XML文件(传智播客视频笔记)

    Service.java源码: package com.sinaapp.ssun.service; import java.io.InputStream; import java.io.OutputS ...

  8. java jni框架,Java JNI 简明教程(一)——传智播客JNI笔记(王泽佑)

    package cn.itcast; public calss TestNative { public native void sayHello(); public static void main( ...

  9. 安卓视频开发 mysql_在Android应用中使用SQLite数据库(传智播客视频笔记)

    在Android应用中使用SQLite数据库 应用生成的数据库文件保存为/data/data/应用包名/databases/name.db,生成的文件可用SQLite Expert打开 (name是自 ...

最新文章

  1. Sql Server 字符串操作总结
  2. ug11许可证文件路径安装在哪_Matlab2012a安装教程
  3. 推荐阅读-Docker实现原理之Namespace,CGroup
  4. win11如何取消开机自检 windows11取消开机自检的设置方法
  5. win10家庭版添加组策略编辑器,禁用系统自动更新
  6. 学生成绩管理系统(C语言)
  7. 电脑中EXE文件关联的修复方法
  8. MML ch 10 主成分分析降维(Dimensionality Reduction with Principal Component Analysis)
  9. 万字干货 | 如何从0到1搭建一套会员体系
  10. 北上广深——这无处安放的肉身
  11. Unity SRP初识之URP
  12. 计算机专业教学总结,计算机教研组教学工作总结
  13. 简单的小游戏,六步实现简单扫雷!(可玩)
  14. 火狐3本月17日发布 与IE 8设计理念完全不同
  15. 详解EBS接口开发之销售订单挑库发放
  16. 如何在线翻译整篇PDF论文?
  17. 清华-计算机-考研-精华帖-汇总
  18. Android之ListView自带的布局simple_list_item
  19. 10大常见反人类设计:产品经理你的良心不会痛吗
  20. H.264/AVC 中的宏块、片、帧

热门文章

  1. 正确的坐姿是怎么样的?
  2. 复数域内的微分解法(温度扩散模型)
  3. python数据分析毕业论文摘要_基于python的毕业论文怎么写?
  4. TSINGSEE青犀视频与海康合作研发推流摄像机(枪机)为高空抛物提供了有效解决方案
  5. 结合实例介绍DSP芯片的选用考虑因素
  6. 如何把mac照片导入u盘_苹果电脑怎么把文件复制到u盘
  7. 计算机博士英文复试自我介绍,博士复试自我介绍中英文
  8. LeetCode 957. N 天后的牢房--储存循环节
  9. viewer插件查看图片
  10. Excel VBA之立即窗口