ThinkPHP 5.0--基础篇****(视图和模版)
一、视图view
i. 主要展示界面 可以接受用户输入等操作 通常是一个html页面
ii. 助手函数 view()
![](https://img.haomeiwen.com/i12404855/0bd8e33b082925a9.png)
![](https://img.haomeiwen.com/i12404855/6f6577199bee839f.png)
如果没有对模版进行配置(没有在配置文件中修改 )默认调用 当前模块/view/当前控制器/当前方法名.html
- view() 传递一个参数之后 return view(‘a’) ;
![](https://img.haomeiwen.com/i12404855/28a7840daaa0fd7a.png)
- 传递一个带路径的参数 return view(‘config/a’) ;
![](https://img.haomeiwen.com/i12404855/85118bc9245988dc.png)
- 传递路径 ./ return view(‘./a.html’) ; public/index.php入口文件 ./同级 此种写法 必须加上后缀 .html
![](https://img.haomeiwen.com/i12404855/d0985288f9db8b53.png)
- View()助手函数 传递两个参数
![](https://img.haomeiwen.com/i12404855/df069434d6f2b529.png)
- view()助手函数的第三个参数 替换
![](https://img.haomeiwen.com/i12404855/2d64466de1c306a6.png)
- 总结:使用助手函数很方便 但是有隐患 如 同名函数覆盖 一些配置失效等等
iii. return $this->fetch() 传递三个参数 使用方法同上 (use think\Controller) extends Controller
![](https://img.haomeiwen.com/i12404855/dbac6da918aa8c8a.png)
iv. 使用$this->assign(‘’,’’) 传递变量
![](https://img.haomeiwen.com/i12404855/a4a6dfc4811697df.png)
v. $this->display(‘串’) 与模版没有关系
$this->assign(‘a’,’123’) ; $this->fetch(‘index.html’) 将变量传递到模版index.html
![](https://img.haomeiwen.com/i12404855/c96c9675a1c601a6.png)
vi. $this->assign(‘a’,’123’) ; 也可以向$this->display(‘字符串{$a}’)中传递变量
二、模版变量输出 替换 赋值
i. 经过php编译器解析 模版文件最终 编译成.php文件 输出 runtime/temp
![](https://img.haomeiwen.com/i12404855/b2db1d76ba9ebf10.png)
![](https://img.haomeiwen.com/i12404855/8dad5396db5ce582.png)
ii. 模版语法 {} 以花括号开始结束标记 惯例配置(thinkphp/convention.php) ---【详情参见 配置篇】
![](https://img.haomeiwen.com/i12404855/560e51bd8146bcd5.png)
- 拷贝到应用配置文件中 测试 (conf/config.php)
![](https://img.haomeiwen.com/i12404855/662070921e1e520e.png)
- 配置这两个选项的场景: 程序中使用了 Vue.js|AngularJS|Angular2...这样的前端框架 很有可能和模版冲突 就需要修改此处的 开始 结束标记
iii. 变量输出---模版中{$a} 变量和开始|结束标记之间 不能有空格{ $a }
![](https://img.haomeiwen.com/i12404855/76ba08134158a102.png)
![](https://img.haomeiwen.com/i12404855/0f915952f876d914.png)
![](https://img.haomeiwen.com/i12404855/911b30192cf2774a.png)
![](https://img.haomeiwen.com/i12404855/5a47abf1d418e595.png)
iv. 变量赋值---向模版文件中输出变量
- fetch(‘’,[])的第二个参数 数组类型
![](https://img.haomeiwen.com/i12404855/e9f863e16f5ad82c.png)
- assign(‘’,’’) key=>value类型
![](https://img.haomeiwen.com/i12404855/e209bccea30df8b9.png)
- view方法 继承Controller之后 key=>value
![](https://img.haomeiwen.com/i12404855/b64bf172bf718e4c.png)
- share静态方法 ThinkPHP5.0.4 之后
![](https://img.haomeiwen.com/i12404855/5a622a7d2a4dcc79.png)
- 上述四种方法 可同时有效
v. 替换
-
fetch(‘’,[],[‘ABC’=>’页面上的ABC替换成此内容’])第三个参数
-
修改配置文件 thinkphp/convention.php
// 视图输出字符串内容替换
'view_replace_str' => [],
![](https://img.haomeiwen.com/i12404855/8214375712f90f7d.png)
a) 在应用配置文件中修改配置
![](https://img.haomeiwen.com/i12404855/85eac024738677fd.png)
b) 多个模块的时候 可以使用扩展配置 分模块配置 ---【详情参见 配置篇】
i. 传统
![](https://img.haomeiwen.com/i12404855/7d41d0d6df7c6971.png)
ii. 潮流
![](https://img.haomeiwen.com/i12404855/51f4558fa914f326.png)
林子大了 鸟多了 维护起来更方便 逼格高!
thinkphp\library\think\View.php 默认配置
![](https://img.haomeiwen.com/i12404855/9a63f2701ab62d73.png)
- 优先级 同配置优先级 方法>控制器>扩展>应用>惯例 【详情参见 配置篇】 这个配置上传下载目录 尤其明显
三、系统变量原生标签
i. 模版中使用系统变量
![](https://img.haomeiwen.com/i12404855/01e4f243329fbcf9.png)
ii. 使用系统变量 获取当前用户 服务器信息 配置信息等等
![](https://img.haomeiwen.com/i12404855/317c168d914d355c.png)
![](https://img.haomeiwen.com/i12404855/0de49669adcf67cb.png)
iii. 模版文件中也可以使用 php原生标签
![](https://img.haomeiwen.com/i12404855/6ab4a6524376bf41.png)
可以用但是不推荐使用 混编 不利于维护 最好前后台代码分离 前台展示数据 后台处理数据
四、变量输出调节器
i. 在模版中使用函数 md5()加密 substr() 截串 date() 格式化
![](https://img.haomeiwen.com/i12404855/64f25347b8a37909.png)
ii. 数值运算 自增 自减
![](https://img.haomeiwen.com/i12404855/1751fb76f479af6d.png)
iii. default 定义默认值
![](https://img.haomeiwen.com/i12404855/2cc03b2e375af543.png)
iv. {literal}中间的内容不会被编译 原样输出{/literal}
![](https://img.haomeiwen.com/i12404855/18407916c085c01e.png)
![](https://img.haomeiwen.com/i12404855/8641096d4e06216a.png)
v. 注释
-
页面上不显示 查看源代码能看到
-
{/* 模版注释 */} 页面不显示 查看源代码看不到
五、模版循环标签
i. volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。
- 默认 迭代器遍历数组中所有数据
a) 在控制器中首先对模版赋值:
![](https://img.haomeiwen.com/i12404855/3d878fbb4a8cbbe7.png)
b) 在模版定义如下,循环输出用户的编号和姓名:
![](https://img.haomeiwen.com/i12404855/82ff3bd2c54128c1.png)
c) name属性:当前模板赋值的变量名称,
Id:表示当前的循环变量,可以随意指定 v|k|data...
- 查询结果中的部分数据,
a) 输出5~15条记录
![](https://img.haomeiwen.com/i12404855/419042b1ee70854c.png)
b) 输出偶数记录
![](https://img.haomeiwen.com/i12404855/501e716948b980b9.png)
- 可传入的参数:
a) offset: offset=’5’ 从第五条记录开始遍历
b) length: 遍历的长度(当前循环的次数)
c) mod: 对当前循环次数取余
d) empty: empty=”暂时没有数据” 支持变量输出
e) key: 数组索引 直接使用$i|$key即可 或者指定key属性 key=’s’ 用$s 获取索引
ii. foreach 类似于volist 没有太多额外属性
- 最简单
![](https://img.haomeiwen.com/i12404855/92a7f694c8bb6354.png)
- 也可以用name:数据源 item:循环变量指定
![](https://img.haomeiwen.com/i12404855/8c3aa20096d82466.png)
- 直接 $key 输出索引 或者 key=’k’ $k获取当前索引
iii. for循环
- 开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。comparison 的默认值是lt,name的默认值是i,步进值的默认值是1
![](https://img.haomeiwen.com/i12404855/23355282b97baf13.png)
![](https://img.haomeiwen.com/i12404855/36c3cdc0220912c4.png)
- 解析之后
![](https://img.haomeiwen.com/i12404855/5bf0d08650a41a06.png)
六、比较标签
i. eq|equal|nequal|notequal 相等|不等
![](https://img.haomeiwen.com/i12404855/bb3f666c5e3e6697.png)
ii. gt|lt 大于|小于
![](https://img.haomeiwen.com/i12404855/0c0c1501c35dd8e6.png)
iii. egt|elt 大于等于|小于等于同理
iv. 以上比较是变量(name=’X’) 和一个数值的比较 变量和变量的比较 value=”$b” 其他同理
![](https://img.haomeiwen.com/i12404855/1af0a2e0de6a4901.png)
七、条件判断标签
i. Switch标签
- 语法:
![](https://img.haomeiwen.com/i12404855/8eba1acd85b731a9.png)
- 如:
![](https://img.haomeiwen.com/i12404855/bc06e2fc33b91046.png)
- name:可以使用函数以及系统变量 name=”Think.get.sid|abs”
case的value属性支持多个条件判断 |分割
{case value=”gif|png|jpg”}图片格式{/case}
也可以使用变量 是用变量不支持多个条件判断
默认case会自动添加break 如果不要break
![](https://img.haomeiwen.com/i12404855/a86fba5647a8b4a2.png)
- 简单用法:
![](https://img.haomeiwen.com/i12404855/76feac5b6333852c.png)
ii. if标签
- 语法:
![](https://img.haomeiwen.com/i12404855/defc7c35b640493e.png)
- condotion属性:
a) 使用php代码
condition="strtoupper($user['name']) neq 'THINKPHP'"
b) 支持点|对象语法
condition="$user.name neq 'ThinkPHP'"
condition="$user:name neq 'ThinkPHP'"
c) 简单用法
![](https://img.haomeiwen.com/i12404855/5cfd087a12fcff13.png)
d) 三种写法 结果是一样的
![](https://img.haomeiwen.com/i12404855/426a704663b83088.png)
iii. in | notin |between |notbetween 判断变量是否在某个范围
- Value可用变量 $range可以是数组 也可以是以逗号分割的字符串 value也可以是系统变量
![](https://img.haomeiwen.com/i12404855/ed1645e7411ec717.png)
![](https://img.haomeiwen.com/i12404855/648f4846f0996bd5.png)
- Between同理 value代表区间 传入两个值,(系统)变量|数组
![](https://img.haomeiwen.com/i12404855/7e5f249794166c12.png)
iv. range
- 语法:
![](https://img.haomeiwen.com/i12404855/46f8ae8c27f13e1a.png)
- 其中type属性的值可以用in/notin/between/notbetween,其它属性的用法和IN或者BETWEEN一致。
v. Defined常量是否定义
- 语法:
![](https://img.haomeiwen.com/i12404855/05e9c610871c8b1c.png)
- name:属性值 严格大小写
八、模版的布局 包含和继承
i. 包含 模版引入 include
![](https://img.haomeiwen.com/i12404855/433a1766a4e68e46.png)
ii. 继承
-
定义base.html 作为父模版(基板)文件
-
其他模版文件继承
![](https://img.haomeiwen.com/i12404855/cf8f277e849c8fb1.png)
- 在基板文件中 刨坑
![](https://img.haomeiwen.com/i12404855/5efbb134219bf648.png)
- 在其他 继承基板的文件中 填土
![](https://img.haomeiwen.com/i12404855/b85da5e3821ed9ae.png)
-
坑可以有多个 但是给坑起的名字不能一样 否则就填错土了
-
填坑的时候 可以在基板的基础上填(继承基板坑里面的内容)
{block} 基板这个坑里面的东西
![](https://img.haomeiwen.com/i12404855/af3be26c5a56d5fd.png)
iii. 布局 layout
- 应用配置 conf/config.php 模版配置'template' => [] ;里面新增配置
![](https://img.haomeiwen.com/i12404855/e3e16ee90f698d52.png)
- 开启layout之后 fetch()默认查找的是 view/layout.html (文件名对应 layout_name)
![](https://img.haomeiwen.com/i12404855/cfa894e2f0054d62.png)
- 定义base.html(基板文件) --替换内容的地方 只挖了一个坑
![](https://img.haomeiwen.com/i12404855/05c76ea0a1fd7c00.png)
- 其他模版文件 不需要继承直接输出 替换的就是{CONTENT}的内容 填坑
![](https://img.haomeiwen.com/i12404855/2bf64d5249e1b73b.png)
-
想挖更多的坑 在layout.html中{$a} {$b}变量的形式接收
-
在其他模版文件中 $this->assign(‘a’,’XXX’) ; $this->assign(‘b’,’XXX’);即可
iv. 什么情况下用继承|布局 视情况而定吧
网友评论