ThinkPHP之视图模版的使用
用户发起一个请求后,服务器应该返回一个页面,而页面是由我们的视图层来控制的。
一、修改控制器
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
...........
} public function sayHello(){
$this->display();
}
}
我们在sayHello()中调用了display方法,而该方法会去View层中找相应的视图模版,并将视图模版放回给用户。查找的顺序如下:
- 进入View下查找Index控制器目录
- 进入Index目录查找sayHello.html
- 找到文件并返回给用户
二、视图操作
- 给视图模版传参
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
echo '.....';
} public function sayHello(){
$username = '冬雨';
$this->assign('username', $username); //设置视图中的变量
$this->display(); //调用相应的视图
}
}
- 编写视图页面
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<p> 你好!{$username}</p>
</body>
</html>
- 请求sayHello方法

三、model操作
在编写model层时需要先连接数据库,这里需要修改我们模块的配置文件./CloudCrypt/Home/Conf/config.php
<?php
return array(
//'配置项'=>'配置值'
'DB_TYPE' => 'mysql', // 数据库类型
'DB_HOST' => '127.0.0.1', // 服务器地址
'DB_NAME' => 'weibo', // 数据库名
'DB_USER' => 'root', // 用户名
'DB_PWD' => 'admin', // 密码
'DB_PORT' => 3306, // 端口
// 'DB_PARAMS' => array(), // 数据库连接参数
// 'DB_PREFIX' => 'think_', // 数据库表前缀
'DB_CHARSET'=> 'utf8', // 字符集
// 'DB_DEBUG' => TRUE, // 数据库调试模式 开启后可以记录SQL日志
);
- 编写控制器1
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
echo '.....';
} public function sayHello(){
$user = M('User'); //user是数据库中的user表
$arr = $user->select(); //查询user表中的所有数据,结果集以数组的方式返回
$this->assign('data', $arr[0]['username']); //结果集中第0行中的username字段值
$this->display(); //给用户返回视图
}
}
- 编写视图层1 视图层仍旧使用上面的那个视图,只不过把username换成了data而已
- 编写控制器2
<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
echo '.....';
} public function sayHello(){
$user = M('User');
$arr = $user->select();
$this->assign('data', $arr); //传给视图层的是一个数组
$this->display();
}
}
- 编写视图层2 (读取数组操作)
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<!--每次从data中取一行赋值给row><-->
<volist name="data" id="row">
{$row.id}------{$row.username}----{$row.userpw}<br/>
</volist>
</body>
</html>
- 执行结果

三、小技巧
为了方便我们开发中的调试,我们可以在入口文件中开启DEBUG模式。ThinkPHP同时提供PAGE_TRACE功能,能查看文件之间的文件之间的调用,SQL语句的查看等功能。
开启PAGE_TRACE:在我们的模块配置文件中添加:‘SHOW_PAGE_TRACE'=>true
然后在页面的右下角有个小图标,点击就可以查看相关信息了。
关于model层的操作请详见
http://www.kancloud.cn/manual/thinkphp/1728
ThinkPHP之视图模版的使用的更多相关文章
- ThinkPHP框架视图详细介绍 View 视图--模板(九)
原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和 ...
- Asp.net Core 3.1 Razor视图模版动态渲染PDF
Asp.net Core 3.1 Razor视图模版动态渲染PDF 前言 最近的线上项目受理回执接入了电子签章,老项目一直是html打印,但是接入的电子签章是仅仅对PDF电子签章,目前还没有Html电 ...
- Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html
Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...
- 【三十五】thinkphp之视图
1.模板定义 视图属于mvc中的v.一般是html结合php获取的数据提供给用户使用. 每个模板的文件都是独立的(文件名与控制器名称必须一样) 默认的模板文件规则是视图目录/[模板主题]控制器/操作名 ...
- 3.ThinkPHP入门---视图
视图:MVC三大组成部分,负责信息的展示和输出 1.视图的创建 创建的位置需要是在分组目录下的view目录下余控制器同名的目录中. 2.视图的展示 在smarty和tinkphp都是使用diaplay ...
- ThinkPHP的视图和模板
简单来说一个控制器对应一个视图,一个方法对应一个模板下面我们直接上图. 二.给模板赋值 给模板赋值在这里用到了assign()这个函数,assign()函数第一个参数为给这个值自定义名称,第二个参数则 ...
- ThinkPHP 前台视图实现类似于Yii的自动验证
ThinkPHP model类其实自带这个功能 可以写一个基础类继承Model 模型层代码: <?php namespace Manager\Model; use Think\Model; cl ...
- flask 之(二) --- 视图|模版|模型
Flask框架 打开pycharm编译器,新建一个Flask项目,选择提前建好的虚拟环境 . 项目结构: static:静态资源文件,可以直接被浏览器访问 templates:模版文件,必须在项目的p ...
- ThinkPHP中视图模型详解.
很多TP的新手对于模型中的视图模型不甚了解,官方虽然有详细手册,但是对于初学者来说还是比较难以理解! 先简单说一下视图模型所能实现的功能,基本就是主表与副表之间各个字段的关联问题,实现多表关联查询,相 ...
随机推荐
- jquery发送异步请求
var remark = $("#"+id+"remark").val(); var shopid = $("#"+id+"sho ...
- R语言绘图高质量输出
R语言通过支持Cairo矢量图形处理的类库,可以创建高质量的矢量图形(PDF,PostScript,SVG) 和 位图(PNG,JPEG, TIFF),同时支持在后台程序中高质量渲染.在ggplot2 ...
- memcpy函数
实现1:<高质量c++,c编程指南> void *mymemcpy(void *dst,const void *src,size_t num) { assert((dst!=NULL)&a ...
- TestNG之参数化
TestNG提供了两种参数化的方式,一种是通过XML,一种是通过代码实现,下面对这两种方式做介绍. 一.通过xml /** * <suite name="Suite" par ...
- RabbitMQ 一二事 - 简单队列使用
消息队列目前流行的有三种 1. RabbitMQ 2. ActiveMQ 3. Kafka 这三种都非常强大,RabbitMQ目前用的比较多,也比较流行,阿里也在用 ActiveMQ是阿帕奇出品,但是 ...
- Fidder--实现手机的抓包
今天闲着没吊事,来写一篇关于怎么抓取Android中的app数据包?工欲行其事,必先利其器,上网google了一下,发现了一款神器:Fiddler,这个貌似是所有软件开发者必备神器呀!这款工具不仅可以 ...
- IO流的练习3 —— 复制多级文件夹下的指定文件并改名
需求:复制指定目录下的指定文件,并修改后缀名. 指定的文件是:.java文件. 指定的后缀名是:.jad 数据源所在文件夹:C:\Users\Administrator\Desktop\记录 目的地所 ...
- usb驱动开发3之先看core
上节中看到usb目录中有一个core目录,凡是认识这个core单词的人都会想要先看看它是什么,对不?用LDD3中一幅图,来表述usb core所处地位. usb core负责实现一些核心的功能,为别的 ...
- [IPSEC PKI]
PKI: 对称加密 非对称加密(混合加密) 数字签名 理论概述: (1)预备知识 对称加密:加密密钥和揭秘蜜钥是同一个密钥 缺点:不适合在互联网上传输密钥 密钥维护工作量大 n(n-1)/2 : ...
- JNI 程序开发
参考资料: http://blog.csdn.net/wwj_748/article/details/28136061 JNI_最简单的Java调用C/C++代码 http://blog.csdn.n ...