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-模板与视图的更多相关文章

  1. Thinkphp学习笔记-模板赋值

    如果要在模板中输出变量,必须在在控制器中把变量传递给模板,系统提供了assign方法对模板变量赋值,无论何种变量类型都统一使用assign赋值. $this->assign('name',$va ...

  2. Thinkphp学习笔记-模板主题

    一个模块如果需要支持多套模板文件的话,就可以使用模板主题功能. 默认情况下,没有开启模板主题功能,如果需要开启,设置 DEFAULT_THEME 参数即可: // 设置默认的模板主题 'DEFAULT ...

  3. ThinkPhp学习01

    原文:ThinkPhp学习01 一.ThinkPHP的介绍           MVC  M - Model 模型                工作:负责数据的操作  V - View  视图(模板 ...

  4. thinkphp学习笔记7—多层MVC

    原文:thinkphp学习笔记7-多层MVC ThinkPHP支持多层设计. 1.模型层Model 使用多层目录结构和命名规范来设计多层的model,例如在项目设计中如果需要区分数据层,逻辑层,服务层 ...

  5. thinkphp学习笔记4—眼花缭乱的配置

    原文:thinkphp学习笔记4-眼花缭乱的配置 1.配置类别 ThinkPHP提供了灵活的全局配置功能,ThinkPHP会依次加载管理配置>项目配置>调试配置>分组配置>扩展 ...

  6. ThinkPHP学习总结

    ThinkPHP学习总结 网站开发使用的thinkPHP5.0在此总结备查 MVC关系功能图 一.Thinkphp开发规范 l 类 类库.函数文件统一以.php为后缀: 类的文件名均以命名空间定义,并 ...

  7. ASP.NET MVC 5 学习教程:修改视图和布局页

    原文 ASP.NET MVC 5 学习教程:修改视图和布局页 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...

  8. ASP.NET MVC 5 学习教程:添加视图

    原文 ASP.NET MVC 5 学习教程:添加视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...

  9. ThinkPhp学习13

    原文:ThinkPhp学习13 简单登录验证 创建Login类 <?php class LoginAction extends Action { function index(){ $this- ...

随机推荐

  1. CBrother异或加密与C++异或加密函数

    CBrother脚本异或加密与C++异或加密函数 异或对于数据加密来说是最简单的方式,在一般的安全性要求不是非常高的地方,异或加密是最好的选择. C++异或加密代码 int g_PWD = 0xffe ...

  2. JavaScript总结(四)

    详解BOM(浏览器对象模型(Browser Object Model)) ✍ Window对象方法 方法 描述 alert() 显示带有一段消息和一个确认按钮的警告框 blur() 把键盘焦点从顶层窗 ...

  3. VBA 语言基础

    VBA 语言基础 第一节 标识符 一.定义 标识符是一种标识变量.常量.过程.函数.类等语言构成单位的符号,利用它可以完成对变量.常量.过程.函数.类等的引用. 二.命名规则 1) 字母打头,由字母. ...

  4. Python day1 ---python基础1

    本节内容 Python介绍 编程语言分类 Hello World程序 变量 字符编码 用户输入 数据类型初识 表达式if ...else语句 表达式while 循环 表达式for 循环 break a ...

  5. Flutter - > Android dependency 'com.android.support:support-v4' has different version for the compile (26.1.0) and runtime (27.1.1) classpath.

    Launching lib\main.dart on Nokia X6 in debug mode... Initializing gradle... Resolving dependencies.. ...

  6. 一个简单的获取RGB值方式

    操作系统内置了许多小工具,有时候这些小工具也挺有用的,省去了安装一些复杂的软件, 截图 通过键盘PrtSc获取到要取色的图片,然后用画图工具打开 查看 通过画图工具的取色工具,取到你需要的颜色,然后点 ...

  7. SpringBoot之MongoTemplate的查询可以怎么耍

    学习一个新的数据库,一般怎么下手呢?基本的CURD没跑了,当可以熟练的增.删.改.查一个数据库时,可以说对这个数据库算是入门了,如果需要更进一步的话,就需要了解下数据库的特性,比如索引.事物.锁.分布 ...

  8. Genymotion模拟器安装问题及解决(启动失败,模拟器不能联网)

    安装Genymotion模拟器安装后启动不了,报错: 百度的解决方法是打开VMVBirtualox选中自己的设备点击设置—常规—将版本设置为图中箭头所指的: 但是我这样做的时候发现我的下拉列表中没有6 ...

  9. idea配置SOLServer错误解决记录

    1.错误信息:2019-03-26 13:32:41.205 ERROR 7828 --- [nio-8081-exec-1] c.alibaba.druid.filter.stat.StatFilt ...

  10. mnist手写数字识别(SVM)

    import numpy as np from sklearn.neural_network import MLPClassifier from sklearn.linear_model import ...