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的新手对于模型中的视图模型不甚了解,官方虽然有详细手册,但是对于初学者来说还是比较难以理解! 先简单说一下视图模型所能实现的功能,基本就是主表与副表之间各个字段的关联问题,实现多表关联查询,相 ...
随机推荐
- poj 2942 Knights of the Round Table 圆桌骑士(双连通分量模板题)
Knights of the Round Table Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 9169 Accep ...
- python判断字符串,str函数isdigit、isdecimal、isnumeric的区别
s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小写s.isupper() ...
- Icacls 在windows目录文件授权中的应用
前言 最近因工作需要,需要对批量服务器某一目录下的文件进行统一授权,对于linux来说,授权很方便,对于window来说,要对目录下的文件进行批量授权还是很不方便的,windows平台授权自然想到用i ...
- Sample SecondarySort 浅析
示例文件: 100 99 100 98 100 56 100 78 20 100 30 100 20 50 30 50 30 60 20 80 需求:首先按第一个数字分组,组成按第二个数字排序. 解决 ...
- [转]移动web开发中meta标签作用
今天在尝试做移动页面的时候遇到了一个问题,<meta content="telephone=no,email=no" name="format-detection& ...
- Jenkins插件hyper slaves源码分析
1.public class HyperSlaves extends Plugin implements Describable<HyperSlaves> (1).init():初始化co ...
- java四舍五入的取舍
一.保留2位小数,且四舍五入 String re = new java.text.DecimalFormat("#.##").format(3.14555); 结果:3.15 二. ...
- PAT 1063 Set Similarity (25)
题意:给你n个集合,k次询问,每次询问求两个集合的(交集)/(并集). 思路:k有2000,集合大小有10000.先将每个集合排序,对每个询问分别设两个指针指向两个集合的头.设a[i]为指针1的值,b ...
- uGUI练习(九) Toggle Button
练习目标 练习单选框,多选框 Toggle Group:Toggle容器 Toggle:单一的选项 练习步骤 1.创建一个Panel,命名TogglePanel,添加Toggle Group组件,可以 ...
- Linux下CGroup使用说明梳理
CGroup 介绍CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制.记录.隔离进程组 (process groups) 所使用的物力资源 (如 cpu m ...