传智播客PHP笔记05-thinkphp框架-视图渲染、display,fetch,模板替换,模板变量的赋值与实现,系统变量,模板函数,模板运算符,foreach,if,比较标签,volist标签
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标签相关推荐
- 传智oracle,传智播客Oracle笔记
Oracle笔记 oracle 传智播客_ORACLE经典视频教程 笔记(2008-09-09 15:32:34) 标签:it 分类:Oracle 1.3个默认用户 sys chang_on_inst ...
- Day7:Vue入门学习——传智播客学习笔记【微服务电商】
本节依旧是前端内容,但还是了解一下基础的入门知识 学习目标 会创建Vue实例,知道Vue的常见属性 会使用Vue的生命周期的钩子函数 会使用vue常见指令 会使用vue计算属性和watch监控 会编写 ...
- jQuery基础(传智播客学习笔记)
JQuery 基础: 1. 概念: 一个JavaScript框架.简化JS开发* jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码 ...
- 传智播客自学笔记第9天(待编辑)
一.访问修饰符 访问修饰符:public protected default private public protected default priva ...
- Day2:SpringCloud入门学习——传智播客学习笔记【微服务电商】
SpringCloud 0.学习目标 ·了解系统架构的演变 ·了解RPC与Http的区别 ·掌握HttpClient的简单使用 ·知道什么是SpringCloud ·独立搭建Eureka注册中心 ·独 ...
- 传智播客python笔记_python传智播客笔记--第十天:隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写...
封装,继承,多态 隐藏属性,私有属性,私有方法,__del__方法,类的继承,类中方法的重写 -**************************************************** ...
- 在Android应用中使用Pull解析XML文件(传智播客视频笔记)
Service.java源码: package com.sinaapp.ssun.service; import java.io.InputStream; import java.io.OutputS ...
- java jni框架,Java JNI 简明教程(一)——传智播客JNI笔记(王泽佑)
package cn.itcast; public calss TestNative { public native void sayHello(); public static void main( ...
- 安卓视频开发 mysql_在Android应用中使用SQLite数据库(传智播客视频笔记)
在Android应用中使用SQLite数据库 应用生成的数据库文件保存为/data/data/应用包名/databases/name.db,生成的文件可用SQLite Expert打开 (name是自 ...
最新文章
- Sql Server 字符串操作总结
- ug11许可证文件路径安装在哪_Matlab2012a安装教程
- 推荐阅读-Docker实现原理之Namespace,CGroup
- win11如何取消开机自检 windows11取消开机自检的设置方法
- win10家庭版添加组策略编辑器,禁用系统自动更新
- 学生成绩管理系统(C语言)
- 电脑中EXE文件关联的修复方法
- MML ch 10 主成分分析降维(Dimensionality Reduction with Principal Component Analysis)
- 万字干货 | 如何从0到1搭建一套会员体系
- 北上广深——这无处安放的肉身
- Unity SRP初识之URP
- 计算机专业教学总结,计算机教研组教学工作总结
- 简单的小游戏,六步实现简单扫雷!(可玩)
- 火狐3本月17日发布 与IE 8设计理念完全不同
- 详解EBS接口开发之销售订单挑库发放
- 如何在线翻译整篇PDF论文?
- 清华-计算机-考研-精华帖-汇总
- Android之ListView自带的布局simple_list_item
- 10大常见反人类设计:产品经理你的良心不会痛吗
- H.264/AVC 中的宏块、片、帧