博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(10)学习tp5之视图
阅读量:3778 次
发布时间:2019-05-22

本文共 3453 字,大约阅读时间需要 11 分钟。

系统学习tp5框架,请点击下面的连接

视图命名:在各自模块下建立view目录,view目录下建控制器目录(控制器名如果是驼峰法转换为全小写加_)

1、路由

use think\Route;//该文件是路由的配置文件,解决复杂场景用的Route::get('index','index/IndexController/index');  //手册-》视图-》模板渲染Route::get('send','index/IndexController/send');    //手册-》视图-》模板赋值Route::get('cont','index/IndexController/cont');    //手册-》模板-》超全局变量(变量输出)和系统常量Route::get('fun','index/IndexController/fun');      //手册-》模板-》使用函数(模板中输出函数处理)Route::get('loop','index/IndexController/loop');    //手册-》模板-》内置标签(遍历模板中的数据)Route::get('replace','index/IndexController/replace');Route::get('original','index/IndexController/original');    //手册-》模板-》原样输出(防止模板标签被解析)Route::get('layout','index/IndexController/layout');    //手册-》模板-》模板布局

2、模板渲染

3、模板赋值

//模板赋值的本质是:给前端页面发送数据public function send(){    $resObj = User::get(1);    $this->assign('mysqlUser',$resObj); //对象    $arrData = [        'a' => '张三',        'b' => '李四',        'c' => '王五'    ];    $this->assign('user',$arrData);    //数组赋值    $name = 'yx';    $age = 26;    return $this->fetch('send',[    //数组直接输出        'na' => $name,        'ag' => $age    ]);}

4、超全局变量和系统常量的输出

//超全局变量和系统常量的输出public function cont(){    //常用可以直接在模板中输出,只需要加入$Think    Session::set('user_name','杨西瓜');    echo Session::get('user_name');    return $this->fetch();}

5、模板中使用php函数

//模板中使用函数处理public function fun(){    /* 总结:     *  1、函数中只传变量。     *  2、函数中要传参数和变量,变量用###占位     * */    return $this->fetch('fun',[        'na' => 'yangxigua',        'hna' => '

海阔天空

', 'ti' => time(), 'str' => 'hello', 'attack' => "" ]);}

这是index_controller控制器的fun模板


【只传一个变量】用管道符,后面跟函数名。 多个函数,是先用函数处理前面的,在用后面的函数处理它前面的

{$na|strtoupper|md5}

【安全攻击】

{$attack|htmlspecialchars}
{$hna|strip_tags}

【带参数的函数,参数在前,变量在后】 用等号,参数中间加逗号,###相当于是占位符。 因为管道符会把前面的结果传给后面

{$ti|date="Y-m-d H:i:s",###}

【带参数的函数,变量在前,参数在后】 用等号,参数中间加逗号,###相当于是占位符。 因为管道符会把前面的结果传给后面

{$str|substr=###,0,3}

【默认值】

{$test|default='您看见的是默认值'}

【原生写法】花括号中加冒号

{:strtoupper($na)}

6、遍历模板中的数据

//遍历模板中的数据public function loop(){    $res = User::all([1,2])->toArray();    return $this->fetch('loop',[        'twoWei' => $res    ]);}

这是index_controller控制器的loop模板


volist用法

{volist name="twoWei" id="val" }
{$i}=>{$key}=>{$val.name}
{/volist}

foreach用法

{foreach $twoWei as $k=>$v} foreach打印:{$v['id']}=>{$v['name']}
{if($v['id'] == 1)} if判断:{$v['name']}
{elseif($v['id'] == 2) /} else if判断:{$v['name']}
{else /} 你进的是else {/if}
{switch name="$v['name']"} {case value='我'} switch判断:{$v['password']}
{/case} {default /} switch的default
{/switch}
{$v['name'] == '我' ? '三元运算符:输出密码' : '三元运算符:输出no'}
{/foreach}

for用法

{for start="1" end="6" name='i' step="2"} {$i}{/for}

原生用法

{php} echo "只是给包裹php的<>换成了{},问号换成了/其余一样。
"; echo '这里面写php代码就可以了';{/php}

7、字符串替换

在app/config.php中改,多个替换用逗号分隔

// 视图输出字符串内容替换'view_replace_str'       => ['__IMG__'=>'/static/img/','_ICON_'=>'/static/icon/'],

控制器代码:

//字符串替换public function replace(){    //看着像常量,其实不是。需要先在config.php中定义    return $this->fetch();}

模板代码和输出效果:

8、原样输出

//原样输出public function original(){    return $this->fetch();}

9、修改模板文件存放目录的位置

先在app/config.php下添加配置

开启之后(模板此时的路径还在app/模块/view中)会报该错误

将其放到public下,就不报错了

10、模板布局之全局生效

修改配置文件

控制器代码随便调用个模板就行(这里就补贴图了)

注意:

1、如果哪个模板不需要引入头脚步,就在该模板中加入{__NOLAYOUT__}

2、如果不开启全局配置,只有单个模板想使用,可以使用{layout name="master/layout" /}

11、模板继承

继承和布局的区别:继承更灵活

注意:要给模板布局那得配置文件注释掉,才能用

定义:

使用(控制器代码也是随便调个模板):

你可能感兴趣的文章
Qt Installer Framework翻译(5-2)
查看>>
Java+Selenium+Testng自动化测试学习(三)— 断言
查看>>
PAT乙级1012
查看>>
银行业务队列简单模拟(队列queue)
查看>>
MySql中的数据查询语言(DQL)三:连接查询
查看>>
MySql中的数据查询语言(DQL)五:union和limit
查看>>
数据操作语言(DML)一:插入数据insert、修改数据update、删除delete
查看>>
.properties 文件,.yml 文件 ,yaml文件语法学习
查看>>
jsp 的常用标签
查看>>
Listener 监听器
查看>>
SpringBoot自动配置原理
查看>>
IDEA连接mysql又报错设置时区!Server returns invalid timezone.
查看>>
员工管理系统二:首页和国际化实现
查看>>
员工管理系统四:员工列表实现
查看>>
员工管理系统五:增删改员工实现
查看>>
Redis的安装与卸载
查看>>
项目阶段五:验证码
查看>>
项目阶段五:购物车
查看>>
项目阶段六:订单模块的数据库准备与dao、service层
查看>>
项目阶段六:后台管理的订单模块
查看>>