thinkphp学习3-模板与视图
1.模板赋值
如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值。
$this->assign('name',$value);
// 下面的写法是等效的
$this->name = $value;
assign方法必须在display和show方法之前调用。系统变量可以通过特殊的标签输出,无需赋值模板变量。
赋值后,就可以在模板文件中输出变量了,如果使用的是内置模板的话,就可以这样输出: {$name}
如果要同时输出多个模板变量,可以使用下面的方式:
$array['name'] = 'thinkphp';
$array['email'] = 'liu21st@gmail.com';
$array['phone'] = '12335678';
$this->assign($array);
这样,就可以在模板文件中同时输出name、email和phone三个变量。
2.模板渲染
渲染模板输出最常用的是使用display方法,调用格式:
display('[模板文件]'[,'字符编码'][,'输出类型'])
模板文件的写法支持下面几种:
// 不带任何参数 自动定位当前操作的模板文件
$this->display();
系统按照默认规则自动定位模板文件,其规则是:
如果当前没有启用模板主题则定位到:当前模块/默认视图目录/当前控制器/当前操作.html,如果有启用模板主题则定位到:当前模块/默认视图目录/当前主题/当前控制器/当前操作.html,通常默认的视图目录是View。
指定模板输出,如下:
//调用当前控制器视图目录下的edit.html模板。
$this->display('edit');
调用其他控制器视图目录下的模板,如下:
//调用Member控制器视图目录下的read.html模板
$this->display('Member:read');
渲染输出不需要写模板文件的路径和后缀,确切地说,这里面的控制器和操作并不一定需要有实际对应的控制器和操作,只是一个目录名称和文件名称而已,例如,你的项目里面可能根本没有Public控制器,更没有Public控制器的menu操作,但是一样可以使用 $this->display('Public:menu'); 输出这个模板文件。
调用其他模块下的模板,如下:
$this->display("Login@Test:edit"); //如果当前模块是Home,表示调用Login模块下Test控制器视图目录下的edit.html模板。
display方法支持在渲染输出的时候指定输出编码和类型,例如,可以指定编码和类型:
$this->display('read', 'utf-8', 'text/xml');
表示输出XML页面类型。编码及类型是通过http响应头中指定的:

事情总有特例,如果的模板目录是自定义的,或者根本不需要按模块进行分目录存放,直接传入模板文件名即可,例如:
$this->display('./Template/Public/menu.html');
这种方式需要指定模板路径和后缀,这里的Template/Public目录是位于当前项目入口文件位置下面。如果是其他的后缀文件,也支持直接输出。
要注意模板文件位置是相对于项目的入口文件index.php,而不是模板目录。
3.获取模板地址
T函数用于生成模板文件名,用法:
T([资源://][模块@][主题/][控制器/]操作,[视图分层])
T函数的返回值是一个完整的模板文件名,可以直接用于display和fetch方法进行渲染输出。
T('Public/menu');// 返回 当前模块/View/Public/menu.html
T('blue/Public/menu');// 返回 当前模块/View/blue/Public/menu.html
T('Admin@Public/menu');// 返回 Admin/View/Public/menu.html
// 在display方法中直接使用T函数输出模板
$this->display(T('Admin@Public/menu'));
5.获取内容
如果需要获取渲染模板的输出内容而不是直接输出,可以使用fetch方法。
模板文件的调用方法和display方法完全一样,区别就在于fetch方法渲染后不是直接输出,而是返回渲染后的内容,例如:
$content = $this->fetch('Member:edit');
6.渲染内容
如果你没有定义任何模板文件,或者把模板内容存储到数据库中的话,你就需要使用show方法来渲染输出了,show方法的调用格式:
show('渲染内容'[,'字符编码'][,'输出类型'])
可以指定编码和类型: $this->show($content, 'utf-8', 'text/xml');
thinkphp学习3-模板与视图的更多相关文章
- Thinkphp学习笔记-模板赋值
如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值. $this->assign('name',$va ...
- Thinkphp学习笔记-模板主题
一个模块如果需要支持多套模板文件的话,就可以使用模板主题功能. 默认情况下,没有开启模板主题功能,如果需要开启,设置 DEFAULT_THEME 参数即可: // 设置默认的模板主题 'DEFAULT ...
- ThinkPhp学习01
原文:ThinkPhp学习01 一.ThinkPHP的介绍 MVC M - Model 模型 工作:负责数据的操作 V - View 视图(模板 ...
- thinkphp学习笔记7—多层MVC
原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...
- thinkphp学习笔记4—眼花缭乱的配置
原文:thinkphp学习笔记4-眼花缭乱的配置 1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展 ...
- ThinkPHP学习总结
ThinkPHP学习总结 网站开发使用的thinkPHP5.0在此总结备查 MVC关系功能图 一.Thinkphp开发规范 l 类 类库.函数文件统一以.php为后缀: 类的文件名均以命名空间定义,并 ...
- ASP.NET MVC 5 学习教程:修改视图和布局页
原文 ASP.NET MVC 5 学习教程:修改视图和布局页 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
- ASP.NET MVC 5 学习教程:添加视图
原文 ASP.NET MVC 5 学习教程:添加视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...
- ThinkPhp学习13
原文:ThinkPhp学习13 简单登录验证 创建Login类 <?php class LoginAction extends Action { function index(){ $this- ...
随机推荐
- python爬虫-execjs使用
python爬虫-execjs使用 ecexjs的作用 通过python代码去执行JavaScript代码的库 execjs的安装 pip install PyExecJS execjs使用之前,得先 ...
- 【转】CSDN离线网页html文件自动跳转
问题: 最近使用OneNote2016剪辑csdn的文章时,发现一些公式/文本框不能被正确识别,所以离线保存网页的html文件. 但是每次打开html文件,都会自动跳转的CSDN主页,即使断网,也会自 ...
- 20155327Exp6 信息搜集与漏洞扫描
20155327Exp6 信息搜集与漏洞扫描 实验过程 一.信息搜集 whois 在kali终端输入whois 网址,查看注册的公司.服务.注册省份.传真.电话等信息. dig或nslookup域名查 ...
- 2 timeit模块,python中数据结构
1.timeit模块:代码事件测量模块 timeit模块可以用来测试一小段Python代码的执行速度. class timeit.Timer(stmt='pass', setup='pass', ti ...
- Codeforces 862D. Mahmoud and Ehab and the binary string (二分)
题目链接:Mahmoud and Ehab and the binary string 题意: 一道交互题,首先给出一个字符串的长度l.现在让你进行提问(最多15次),每次提问提出一个字符串,会返回这 ...
- 洛咕 P4199 万径人踪灭
给了两条限制,但是第二条想想是没用的,直接manacher就可以减掉多余的部分了,所以要求满足第一条的方案 也不难,可以想到枚举每个中心点,计算两边有多少对距离中心相等的位置值也相等,假设有\(t\) ...
- DMS路由表
DMS路由表: route add -p 53.90.146.0 mask 255.255.255.0 10.77.35.249 ================================= ...
- 【原创】标准HTTP请求工具类
以下是个人在项目开发过程中,总结的Http请求工具类,主要包括四种: 1.处理http POST请求[XML格式.无解压]: 2.处理http GET请求[XML格式.无解压]: 3.处理http P ...
- ThinkPHP学习笔记(一)----初识ThinkPHP
在做微信开发的时候原本使用来yii框架,后续觉得yii虽然功能强大使用方便,但是整个框架太大了,不适合一些轻量级的开发:这个时候发现thinkphp这个框架,框架本身很小,只有几M,但麻雀虽小,但五脏 ...
- 论文阅读 | Formalizing Visualization Design Knowledge as Constraints: Actionable and Extensible Models in Draco
1. Introduction 程序员编写的可视化图表与专家眼中的设计标准总存在差距.我们无法每次都向可视化专家咨询设计上的意见,所以我们需求将设计标准,研究成果应用于自动化设计工具的正式框架,这些工 ...