1.模板定义

视图属于mvc中的v。一般是html结合php获取的数据提供给用户使用。

  • 每个模板的文件都是独立的(文件名与控制器名称必须一样)
  • 默认的模板文件规则是视图目录/[模板主题]控制器/操作名+模板后缀(http://localhost/basic_thinkphp/index.php/Home/User1/index)
        //在controller目录下user控制器下index方法输入
//对应的目录为/Weibo/Home/View/User1/index.html
//渲染模版输出
$this->display();

在view目录下需存在user1/index.html.即可渲染出来

修改模板的一些配置.在common/conf/config.php中修改:

    //修改模版的视图目录
'DEFAULT_V_LAYER' =>'View', //修改模版中的文件的后缀
'TMPL_TEMPLATE_SUFFIX'=>'.tpl', //用下划线代替目录层次
'TMPL_FILE_DEPR'=>'_', //User_index.tpl //设置外部的模版目录
'VIEW_PATH'=>'./Public/', //设置默认主题目录
'DEFAULT_THEME'=>'default',

在controller/usercontroller.class.php输入此行,即可切换主题.:(主题是你可以在配置文件中修改的)

        // 切换主题
$this->theme('blue')->display();

2.赋值(assign)与渲染(display)

thinkphp提供了assign方法对模板变量赋值,无论哪种变量类型都统一使用assign赋值

//给模版传递一个变量
$this->assign('user', '蜡笔小新');
//模版中调用变量
{$user}
//PS:这个方法必须在 display()方法之前使用,保存变量正确传递。

渲染模板使用的是display方法.格式如下:

  1. display([模板文件],[字符编码],[输出类型])
  2. 如果不输入参数,目录是(当前模块/默认视图目录/当前控制器/当前操作.html)
//不传参数
// ./Weibo/Home/View/default/User/index.tpl
$this->display(); //修改默认模版
// ./Weibo/Home/View/default/User/add.tpl
$this->display('add'); //修改默认模版,目录加模版
// ./Weibo/Home/View/default/Bbb/add.tpl
$this->display('Bbb/add'); //修改默认模版,模块加目录加模版
// ./Weibo/Admin/View/default/Bbb/add.tpl
$this->display('Admin@Bbb/add'); //修改默认模版,主题加目录加模版
// ./Weibo/Home/View/blue/Bbb/add.tpl
$this->theme('blue')->display('Bbb/add'); //修改默认模版,自定义模版
// ./Template/Public/add.tpl
$this->display('./Template/Public/add.tpl'); //Template 和 Weibo 同级 //修改默认模版,指定编码和文件类型,一般不用填写,默认即可
$this->display('add', 'utf-8', 'text/xml')

3.模板地址

thinkphp封装了一个T函数,专门用于生成模板文件.格式如下:

  • T([资源://][模块@][主题/][控制器/]操作,[视图分层]);
//输出当前模版地址
echo T();
//结合上面讲的所有定义方法来自定义模版:
echo T('Public/add')
echo T('Admin@index');
echo T('Admin@Public/add', 'Template');
//直接使用T函数输出
$this->display(T());

4.获取内容

如果需要获取模版的内容,可以使用 fetch()方法,这个方法的使用和 display()方法一致

//获取模版里的内容
$content = $this->fetch();
var_dump($content);
//通过内容再渲染输出
$this->show($content);
//PS:使用 fetch()方法获取内容,主要是为了可以处理和过滤更加复杂的内容。然后
处理后再由 show()方法输出。

【三十五】thinkphp之视图的更多相关文章

  1. NeHe OpenGL教程 第三十五课:播放AVI

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

  2. JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!

    JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...

  3. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

  4. Gradle 1.12用户指南翻译——第三十五章. Sonar 插件

    本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...

  5. SQL注入之Sqli-labs系列第三十四关(基于宽字符逃逸POST注入)和三十五关

    开始挑战第三十四关和第三十五关(Bypass add addslashes) 0x1查看源码 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理. if(isset($_ ...

  6. “全栈2019”Java多线程第三十五章:如何获取线程被等待的时间?

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. Python进阶(三十五)-Fiddler命令行和HTTP断点调试

    Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令   上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的se ...

  8. 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码

    第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...

  9. centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课

    centos   shell脚本编程1 正则  shell脚本结构  read命令  date命令的用法  shell中的逻辑判断  if 判断文件.目录属性  shell数组简单用法 $( ) 和$ ...

  10. “全栈2019”Java第三十五章:面向对象

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. Spring Boot REST API 自动化测试

    Spring Boot需要写大量的Junit代码来测试REST API, 这点让不了解代码的人很头疼.如果使用REST client工具测试REST API,很多REST Client工具是不支持自动 ...

  2. Java编译报错:意外的类型

    先上代码 后续更新 public class IncidentType { public static void main(String[] args) { int a = 3; int b = ++ ...

  3. 四轴飞行器1.7 NRF24L01P无线通讯和改进型环形缓冲(转)

    源: 四轴飞行器1.7 NRF24L01P无线通讯和改进型环形缓冲

  4. Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'

    在运行cmd黑窗口时候出现:Error: could not open `C:\Java\jre7\lib\amd64\jvm.cfg'这样的错误的时候,本人没有删除任何文件,只是重新配置了一下jdk ...

  5. 使用Oracle数据库时的org.springframework.jdbc.BadSqlGrammarException:

    org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: java.sql.SQLExc ...

  6. P2765 魔术球问题

    P2765 魔术球问题 贪心模拟就可以过.........好像和dinic没啥关系   找找规律发现可以贪心放.n又灰常小. 设答案=m 你可以$O(mn)$直接模拟过去 闲的慌得话可以像我用个$se ...

  7. linux 函数库使用

    程序函数库可分为3种类型:静态函 数库(static libraries).共享函数库(shared libraries)和动态加载函数库(dynamically loaded libraries) ...

  8. UUID实现之一twitter的分布式自增IDsnowflake算法

    Twitter的分布式自增ID算法snowflake (Java版)   概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点 ...

  9. ArrayList集合、String[]数组、String字符串

    数组初始化时候必须指定长度,而ArrayList是动态数组,可以根据实际内容改变 //声明stsArr数组并初始化 String[] strArr = new String[]{ "aaa& ...

  10. UI自动化(二)css选择器

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...