ThinkPHP 5.0--基础篇(视图和模版)

ThinkPHP 5.0--基础篇(视图和模版)

一、视图view

i. 主要展示界面  可以接受用户输入等操作 通常是一个html页面

ii. 助手函数 view()

 ThinkPHP 5.0--基础篇(视图和模版)


ThinkPHP 5.0--基础篇(视图和模版) 

如果没有对模版进行配置(没有在配置文件中修改 )默认调用 当前模块/view/当前控制器/当前方法名.html

1. view() 传递一个参数之后  return view(‘a’) ;

 ThinkPHP 5.0--基础篇(视图和模版)

2. 传递一个带路径的参数  return view(‘config/a’) ;

 ThinkPHP 5.0--基础篇(视图和模版)

3. 传递路径 ./   return view(‘./a.html’) ;  public/index.php入口文件 ./同级  此种写法 必须加上后缀  .html

 ThinkPHP 5.0--基础篇(视图和模版)

4. View()助手函数 传递两个参数

 ThinkPHP 5.0--基础篇(视图和模版)

5. view()助手函数的第三个参数  替换

 ThinkPHP 5.0--基础篇(视图和模版)

6. 总结:使用助手函数很方便 但是有隐患  如 同名函数覆盖 一些配置失效等等  

iii. return $this->fetch()   传递三个参数 使用方法同上 (use think\Controller) extends Controller

 ThinkPHP 5.0--基础篇(视图和模版)

iv. 使用$this->assign(‘’,’’) 传递变量

 ThinkPHP 5.0--基础篇(视图和模版)

v. $this->display(‘串’)  与模版没有关系  

$this->assign(‘a’,’123’) ; $this->fetch(‘index.html’) 将变量传递到模版index.html

 ThinkPHP 5.0--基础篇(视图和模版)

vi. $this->assign(‘a’,’123’) ; 也可以向$this->display(字符串{$a}’)中传递变量

 

二、模版变量输出 替换 赋值

i. 经过php编译器解析   模版文件最终 编译成.php文件 输出 runtime/temp

 ThinkPHP 5.0--基础篇(视图和模版)


ThinkPHP 5.0--基础篇(视图和模版) 

 

ii. 模版语法 {} 以花括号开始结束标记  惯例配置(thinkphp/convention.php) ---【详情参见 配置篇】

 ThinkPHP 5.0--基础篇(视图和模版)

1. 拷贝到应用配置文件中 测试 (conf/config.php)

 ThinkPHP 5.0--基础篇(视图和模版)

2. 配置这两个选项的场景: 程序中使用了 Vue.js|AngularJS|Angular2...这样的前端框架  很有可能和模版冲突  就需要修改此处的 开始 结束标记

iii. 变量输出---模版中{$a} 变量和开始|结束标记之间 不能有空格{ $a }

 ThinkPHP 5.0--基础篇(视图和模版)


ThinkPHP 5.0--基础篇(视图和模版)

ThinkPHP 5.0--基础篇(视图和模版)

ThinkPHP 5.0--基础篇(视图和模版) 

 

 

iv.  变量赋值---向模版文件中输出变量

1. fetch(‘’,[])的第二个参数 数组类型

 ThinkPHP 5.0--基础篇(视图和模版)

2. assign(‘’,’’)  key=>value类型

 ThinkPHP 5.0--基础篇(视图和模版)

3. view方法  继承Controller之后   key=>value

 ThinkPHP 5.0--基础篇(视图和模版)

4. share静态方法  ThinkPHP5.0.4 之后

 ThinkPHP 5.0--基础篇(视图和模版)

5. 上述四种方法 可同时有效

v. 替换

1. fetch(‘’,[],[‘ABC’=>’页面上的ABC替换成此内容’])第三个参数

2. 修改配置文件  thinkphp/convention.php

    // 视图输出字符串内容替换

'view_replace_str'       => [],

 ThinkPHP 5.0--基础篇(视图和模版)

 

a) 在应用配置文件中修改配置

 ThinkPHP 5.0--基础篇(视图和模版)

b) 多个模块的时候 可以使用扩展配置  分模块配置 ---【详情参见 配置篇】

i. 传统

 ThinkPHP 5.0--基础篇(视图和模版)

ii. 潮流

 ThinkPHP 5.0--基础篇(视图和模版)

林子大了 鸟多了 维护起来更方便 逼格高!

thinkphp\library\think\View.php 默认配置

 ThinkPHP 5.0--基础篇(视图和模版)

3. 优先级 同配置优先级  方法>控制器>扩展>应用>惯例 【详情参见 配置篇】 这个配置上传下载目录  尤其明显

 

三、系统变量原生标签

i. 模版中使用系统变量

 ThinkPHP 5.0--基础篇(视图和模版)

ii. 使用系统变量  获取当前用户  服务器信息 配置信息等等

 ThinkPHP 5.0--基础篇(视图和模版)


ThinkPHP 5.0--基础篇(视图和模版) 

iii. 模版文件中也可以使用 php原生标签

 ThinkPHP 5.0--基础篇(视图和模版)

可以用但是不推荐使用   混编 不利于维护  最好前后台代码分离  前台展示数据 后台处理数据

四、变量输出调节器

i. 在模版中使用函数  md5()加密 substr() 截串  date() 格式化

 ThinkPHP 5.0--基础篇(视图和模版)

ii. 数值运算  自增 自减

 ThinkPHP 5.0--基础篇(视图和模版)

iii. default 定义默认值

 ThinkPHP 5.0--基础篇(视图和模版)

iv. {literal}中间的内容不会被编译 原样输出{/literal}

 ThinkPHP 5.0--基础篇(视图和模版)


ThinkPHP 5.0--基础篇(视图和模版) 

v. 注释

1. <!--html注释-->页面上不显示  查看源代码能看到

2. {/* 模版注释 */} 页面不显示  查看源代码看不到

 

五、模版循环标签

i. volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。

1. 默认 迭代器遍历数组中所有数据

a) 在控制器中首先对模版赋值:

 ThinkPHP 5.0--基础篇(视图和模版)

b) 在模版定义如下,循环输出用户的编号和姓名:

 ThinkPHP 5.0--基础篇(视图和模版)

c) name属性:当前模板赋值的变量名称,

Id:表示当前的循环变量,可以随意指定  v|k|data...

 

2. 查询结果中的部分数据,

a) 输出5~15条记录

 ThinkPHP 5.0--基础篇(视图和模版)

b) 输出偶数记录

 ThinkPHP 5.0--基础篇(视图和模版)

 

3. 可传入的参数:

a) offset:   offset=’5’ 从第五条记录开始遍历

b) length: 遍历的长度(当前循环的次数)

c) mod: 对当前循环次数取余

d) empty: empty=”暂时没有数据”  支持变量输出

e) key: 数组索引  直接使用$i|$key即可  或者指定key属性 key=’s’  $s 获取索引

ii. foreach 类似于volist 没有太多额外属性

1. 最简单

 ThinkPHP 5.0--基础篇(视图和模版)

2. 也可以用name:数据源  item:循环变量指定

 ThinkPHP 5.0--基础篇(视图和模版)

3. 直接 $key 输出索引  或者 key=’k’  $k获取当前索引

iii. for循环

1. 开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。comparison 的默认值是ltname的默认值是i,步进值的默认值是1

 ThinkPHP 5.0--基础篇(视图和模版)


ThinkPHP 5.0--基础篇(视图和模版) 

2. 解析之后

 ThinkPHP 5.0--基础篇(视图和模版)

六、比较标签

i. eq|equal|nequal|notequal   相等|不等

 ThinkPHP 5.0--基础篇(视图和模版)

ii. gt|lt  大于|小于

 ThinkPHP 5.0--基础篇(视图和模版)

iii. egt|elt  大于等于|小于等于同理

iv. 以上比较是变量(name=’X’) 和一个数值的比较 变量和变量的比较  value=”$b”  其他同理

 ThinkPHP 5.0--基础篇(视图和模版)

 

 

七、条件判断标签

i. Switch标签

1. 语法:

 ThinkPHP 5.0--基础篇(视图和模版)

2. 如:

 ThinkPHP 5.0--基础篇(视图和模版)

3. name:可以使用函数以及系统变量  name=”Think.get.sid|abs”

casevalue属性支持多个条件判断 |分割  

{case value=”gif|png|jpg”}图片格式{/case}

也可以使用变量 是用变量不支持多个条件判断

默认case会自动添加break 如果不要break

 ThinkPHP 5.0--基础篇(视图和模版)

 

4. 简单用法:

 ThinkPHP 5.0--基础篇(视图和模版)

ii. if标签

1. 语法:

 ThinkPHP 5.0--基础篇(视图和模版)

2. condotion属性:

a) 使用php代码

condition="strtoupper($user['name']) neq 'THINKPHP'"

 

b) 支持点|对象语法

condition="$user.name neq 'ThinkPHP'"

condition="$user:name neq 'ThinkPHP'"

 

c) 简单用法

 ThinkPHP 5.0--基础篇(视图和模版)

d) 三种写法 结果是一样的

 ThinkPHP 5.0--基础篇(视图和模版)


iii. in | notin |between |notbetween 判断变量是否在某个范围

1. Value可用变量   $range可以是数组 也可以是以逗号分割的字符串 value也可以是系统变量

 ThinkPHP 5.0--基础篇(视图和模版)


ThinkPHP 5.0--基础篇(视图和模版) 

2. Between同理  value代表区间 传入两个值,(系统)变量|数组

 ThinkPHP 5.0--基础篇(视图和模版)

iv. range

1. 语法:

ThinkPHP 5.0--基础篇(视图和模版) 

2. 其中type属性的值可以用in/notin/between/notbetween,其它属性的用法和IN或者BETWEEN一致。

v. Defined常量是否定义

1. 语法:

 ThinkPHP 5.0--基础篇(视图和模版)

2. name:属性值  严格大小写

 

八、模版的布局 包含和继承

i. 包含 模版引入  include

 ThinkPHP 5.0--基础篇(视图和模版)

ii. 继承

1. 定义base.html 作为父模版(基板)文件

2. 其他模版文件继承

ThinkPHP 5.0--基础篇(视图和模版) 

3. 在基板文件中 刨坑

 ThinkPHP 5.0--基础篇(视图和模版)

4. 在其他 继承基板的文件中 填土

 ThinkPHP 5.0--基础篇(视图和模版)

5. 坑可以有多个 但是给坑起的名字不能一样  否则就填错土了

6. 填坑的时候 可以在基板的基础上填(继承基板坑里面的内容)

{__block__} 基板这个坑里面的东西

 ThinkPHP 5.0--基础篇(视图和模版)

iii. 布局 layout

1. 应用配置 conf/config.php  模版配置'template' => [] ;里面新增配置

 ThinkPHP 5.0--基础篇(视图和模版)

2. 开启layout之后 fetch()默认查找的是 view/layout.html   (文件名对应 layout_name)

 ThinkPHP 5.0--基础篇(视图和模版)

3. 定义base.html(基板文件)  --替换内容的地方  只挖了一个坑

 ThinkPHP 5.0--基础篇(视图和模版)

4. 其他模版文件 不需要继承直接输出  替换的就是{__CONTENT__}的内容 填坑

 ThinkPHP 5.0--基础篇(视图和模版)

5. 想挖更多的坑  layout.html{$a} {$b}变量的形式接收

6. 在其他模版文件中   $this->assign(‘a’,’XXX’) ;  $this->assign(‘b’,’XXX’);即可

iv. 什么情况下用继承|布局 视情况而定吧