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

(1)学习tp5之助手函数得原理解析

(2)学习tp5之常量、自动加载、命名空间

(3)学习tp5之配置文件

(4)学习tp5之路由类型,定义,动态注册,过滤,闭包,miss(默认),资源路由

(5)学习tp5之请求

(6)学tp5之响应

(7)学习tp5之控制器原理和使用

(8)学习tp5之ORM操作数据库

(9)学习tp5之模型

(10)学习tp5之视图

(11)学习tp5之命令行的使用和验证表单令牌

(12)学习tp5之验证码和缓存

(13)学习tp5之上传图片

(14)学习tp5之日志

(15)学习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、模板渲染

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5修改模板存放的位置

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
    ]);
}

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板布局和继承_02

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

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板布局和继承_03

5、模板中使用php函数

//模板中使用函数处理
public function fun(){
    /* 总结:
     *  1、函数中只传变量。
     *  2、函数中要传参数和变量,变量用###占位
     * */

    return $this->fetch('fun',[
        'na' => 'yangxigua',
        'hna' => '<h1>海阔天空</h1>',
        'ti' => time(),
        'str' => 'hello',
        'attack' => "<script>alert('123');</script>"
    ]);
}
<p>这是index_controller控制器的fun模板</p>
<hr />


<h4>【只传一个变量】用管道符,后面跟函数名。
    <span style="color:blue">多个函数,是先用函数处理前面的,在用后面的函数处理它前面的</span>
</h4>
{$na|strtoupper|md5}
<h4>【安全攻击】</h4>
{$attack|htmlspecialchars}<br />
{$hna|strip_tags}
<hr />

<h4>【带参数的函数,参数在前,变量在后】
    用等号,参数中间加逗号,###相当于是占位符。
    <span style="color:blue">因为管道符会把前面的结果传给后面</span>
</h4>
{$ti|date="Y-m-d H:i:s",###}
<hr />

<h4>【带参数的函数,变量在前,参数在后】
    用等号,参数中间加逗号,###相当于是占位符。
    <span style="color:blue">因为管道符会把前面的结果传给后面</span>
</h4>
{$str|substr=###,0,3}
<hr />

<h4>【默认值】</h4>
{$test|default='您看见的是默认值'}
<hr />

<h4>【原生写法】花括号中加冒号</h4>
{:strtoupper($na)}

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5修改模板存放的位置_04

6、遍历模板中的数据

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板中使用php函数_05

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

    return $this->fetch('loop',[
        'twoWei' => $res
    ]);
}
<p>这是index_controller控制器的loop模板</p>
<hr />

<h4>volist用法</h4>
<!--name相当于是foreach中的中的数据as前面的,id相当于是foreach中的value-->
{volist name="twoWei" id="val" }
    <!--没有指定key属性的话,默认使用循环变量i,来排序,就是123456789。其实key属性就是$i-->
    {$i}=>{$key}=>{$val.name}<br/> <!--输出数组的索引,可以直接使用key变量-->
{/volist}
<hr />


<h4>foreach用法</h4>
<!--只是比php的多加个花括号-->
{foreach $twoWei as $k=>$v}
    foreach打印:{$v['id']}=>{$v['name']}<br/>

<!--if判断-->
    {if($v['id'] == 1)}
        if判断:{$v['name']}<br/>
    {elseif($v['id'] == 2) /}
        else if判断:{$v['name']}<br/>
    {else /}
        你进的是else
    {/if}

<!--switch判断-->
    {switch name="$v['name']"}
        {case value='我'}
            switch判断:{$v['password']}<br/>
        {/case}
        {default /} switch的default<br/>
    {/switch}

<!--手册-》模板-》三元运算符-->
    {$v['name'] == '我' ? '三元运算符:输出密码' : '三元运算符:输出no'}<br/>
{/foreach}
<hr />

<h4>for用法</h4>
<!--这个name属性就是输出的$i。step每次加2-->
{for start="1" end="6" name='i' step="2"}
    {$i}
{/for}
<hr />

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5修改模板存放的位置_06

7、字符串替换

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

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

控制器代码:

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

模板代码和输出效果:

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5修改模板存放的位置_07

8、原样输出

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板赋值并解析_08

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

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5修改模板存放的位置_09

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板赋值并解析_10

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板赋值并解析_11

10、模板布局之全局生效

修改配置文件

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板布局和继承_12

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板中使用php函数_13

注意:

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

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板赋值并解析_14

11、模板继承

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

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板赋值并解析_15

定义:

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5模板赋值并解析_16

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

基于五视图法的酒店管理系统架构设计可以确定组成软件系统的程序模块和以程序模块_tp5修改模板存放的位置_17