用户发起一个请求后,服务器应该返回一个页面,而页面是由我们的视图层来控制的。

一、修改控制器


<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
public function index(){
...........
} public function sayHello(){
$this->display();
}
}

我们在sayHello()中调用了display方法,而该方法会去View层中找相应的视图模版,并将视图模版放回给用户。查找的顺序如下:

  1. 进入View下查找Index控制器目录
  2. 进入Index目录查找sayHello.html
  3. 找到文件并返回给用户

二、视图操作


  • 给视图模版传参
<?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之视图模版的使用的更多相关文章

  1. ThinkPHP框架视图详细介绍 View 视图--模板(九)

    原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和 ...

  2. Asp.net Core 3.1 Razor视图模版动态渲染PDF

    Asp.net Core 3.1 Razor视图模版动态渲染PDF 前言 最近的线上项目受理回执接入了电子签章,老项目一直是html打印,但是接入的电子签章是仅仅对PDF电子签章,目前还没有Html电 ...

  3. Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html

    Asp.net MVC Razor视图模版动态渲染PDF,Razor模版生成静态Html 1.前言 上一篇文章我开源了轮子,Asp.net Core 3.1 Razor视图模版动态渲染PDF,然后,很 ...

  4. 【三十五】thinkphp之视图

    1.模板定义 视图属于mvc中的v.一般是html结合php获取的数据提供给用户使用. 每个模板的文件都是独立的(文件名与控制器名称必须一样) 默认的模板文件规则是视图目录/[模板主题]控制器/操作名 ...

  5. 3.ThinkPHP入门---视图

    视图:MVC三大组成部分,负责信息的展示和输出 1.视图的创建 创建的位置需要是在分组目录下的view目录下余控制器同名的目录中. 2.视图的展示 在smarty和tinkphp都是使用diaplay ...

  6. ThinkPHP的视图和模板

    简单来说一个控制器对应一个视图,一个方法对应一个模板下面我们直接上图. 二.给模板赋值 给模板赋值在这里用到了assign()这个函数,assign()函数第一个参数为给这个值自定义名称,第二个参数则 ...

  7. ThinkPHP 前台视图实现类似于Yii的自动验证

    ThinkPHP model类其实自带这个功能 可以写一个基础类继承Model 模型层代码: <?php namespace Manager\Model; use Think\Model; cl ...

  8. flask 之(二) --- 视图|模版|模型

    Flask框架 打开pycharm编译器,新建一个Flask项目,选择提前建好的虚拟环境 . 项目结构: static:静态资源文件,可以直接被浏览器访问 templates:模版文件,必须在项目的p ...

  9. ThinkPHP中视图模型详解.

    很多TP的新手对于模型中的视图模型不甚了解,官方虽然有详细手册,但是对于初学者来说还是比较难以理解! 先简单说一下视图模型所能实现的功能,基本就是主表与副表之间各个字段的关联问题,实现多表关联查询,相 ...

随机推荐

  1. Linux学习之六——使用vi和vim

    一.vi的三种模式和相互切换 1. 一般模式 1) 移动光标 可以用箭头键,Page Up, Page Down, Home,End等按键移动光标 G,移动到档案最后一行 1G,gg,移动到档案第一行 ...

  2. [部署]CentOS yum源

    安装yum源 一般的软件都会提供一个.rpm的软件包,使用rpm指令安装了这个包后会自动添加一个yum仓库源,之后用yum就可以安装该软件了. 安装rpm包 rpm -ivh http://repo. ...

  3. xargs -n1 -t

    杀掉删除没有释放空间的进程 可以用如下命令,当然也可以写一个循环,不过这一条命令比循环简单 lsof  |grep  deleted  |awk '{print $2}' |xargs  -n1 -t ...

  4. NOIP2008 普及组T3 传球游戏 解题报告-S.B.S.

    题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏. 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同 ...

  5. codeforces 477B B. Dreamoon and Sets(构造)

    题目链接: B. Dreamoon and Sets time limit per test 1 second memory limit per test 256 megabytes input st ...

  6. HDU 4460 Friend Chains --BFS

    题意:问给定的一张图中,相距最远的两个点的距离为多少.解法:跟求树的直径差不多,从1 开始bfs,得到一个最远的点,然后再从该点bfs一遍,得到的最长距离即为答案. 代码: #include < ...

  7. HDU 2669 Romantic【扩展欧几里德】

    裸的扩展欧几里德,求最小的X,X=((X0%b)+b)%b,每个X都对应一个Y,代入原式求解可得 #include<stdio.h> #include<string.h> ty ...

  8. org.springframework.web.context.ContextLoaderListen 报错解决办法

    今天搭建SSH项目的时候出现了如下错误: 严重: Error configuring application listener of class org.springframework.web.con ...

  9. document.write和innerHTML的区别

    document.write是直接写入到页面的内容流,如果在写之前没有调用document.open, 浏览器会自动调用open.每次写完关闭之后重新调用该函数,会导致页面被重写. innerHTML ...

  10. AutoIT 实现Firefox下载

    Firefox下载的完整代码: Func IsVisible($handle) ;WinGetState: 2 = Window is visible If BitAND(WinGetState($h ...