zoukankan      html  css  js  c++  java
  • thinkphp5.0学习(九):TP5.0视图和模板

    原文地址:http://blog.csdn.net/fight_tianer/article/details/78602711

    一、视图

    1.加载页面

    1.继承系统控制器类
        return $this->fetch(参数1,参数2,参数3,参数4);
        参数1(字符串):模板渲染
        参数2(数组):模板赋值
        参数3(数组):模板替换
    2.使用助手函数
        return view();
        参数与fetch相同
    3.使用view类(不建议使用)
        $view=new View();
        return $view->fetch();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2.模板赋值

    1.控制器类中的assign方法
        $this->assign('name',$name);
        $this->assign('city',$city);
        $this->assign(['name'=>$name,'city'=>$city]);
        return view();
    2.通过fetch方法
        return $this->fetch('',['name'=>$name,'city'=>$city]);
    3.助手函数
        return view('',['name'=>$name,'city'=>$city]);
    4.对象赋值
        $this->view->name="甜甜";
        $this->view->city="太原";
        return view();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.模板替换

    1.配置文件更改(全局替换,所有页面中都被替换)(config文件中)
        // 视图输出字符串内容替换
        // 只有页面被替换,也就是在php页面中获取不到__HOMES__
        'view_replace_str'       => [
            '__HOMES__'=>'/static/home/public'
        ],
    2.部分替换
        1.fetch方法
        // fetch参数:页面,变量分配,视图输出字符串内容替换
            return $this->fetch('',[],['__HOMES__'=>'/static/home/public']);
        2.助手函数
            return view('',[],['__HOMES__'=>'/static/home/public']);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4.模板渲染

    1.默认加载当前模块,当前控制器,当前方法对应的页面
            return $this->fetch();
    2.指定加载的页面
            // 加载当前模块,当前控制器下,用户定义的页面
            return $this->fetch('jiazai');
            // 加载当前模块,user控制器下 jiazai页面
            return $this->fetch('user/jiazai');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    二、模板

    1.模板标签

    1.普通标签(删除了runtime下的temp下的缓存文件再测试)

     // 模板引擎普通标签开始标记
     'tpl_begin'    => '{',
     // 模板引擎普通标签结束标记
     'tpl_end'      => '}',
    • 1
    • 2
    • 3
    • 4

    2.标签库标签(删除了runtime下的temp下的缓存文件再测试)

     // 标签库标签开始标记
     'taglib_begin' => '}',
     // 标签库标签结束标记
     'taglib_end'   => '{',
    
    {for start="1" end="10"}
    {$i}
    {/for}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    2.输出变量

    1.字符串

    $this->assign("str","甜甜");
    <h2>{$str}</h2>
    • 1
    • 2

    2.数组

    $data=[
        'name'=>'张三',
        'age'=>18,
        'sex'=>'男'
    ];
    $this->assign("data",$data);
    
    <h2>{$data['name']}<h2>
    <h2>{$data['age']}<h2>
    <h2>{$data['sex']}<h2>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3.使用函数

    //1.使用竖线,参数写在等于号后面
        {$data.name|md5} 
        <?php echo (md5($data['name'])); ?>
    
        {$time|date="y-m-d H:i:s",###}
        <?php echo (date("y-m-d H:i:s",$time)); ?>
    
        {$name|md5|strtoupper|substr=0,10}
        <?php echo (substr(strtoupper(md5($name)),0,10)); ?>
    //2.冒号开始
        {:md5($pass)}
        {:date('Y-m-d H:i:s',$time)} 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4.默认值

    {$user.nickname|default="这家伙很懒,什么也没留下"}
    • 1

    5.三元运算符

    {$status? '正常' : '错误'}
    {$status>2? '正常' : '错误'}
    • 1
    • 2

    6.算数运算符

    {$a}+{$b}={$a+$b}
    {$a}-{$b}={$a-$b}
    {$a}*{$b}={$a*$b}
    {$a}/{$b}={$a/$b}
    {$a}%{$b}={$a%$b}
    {$a++}
    {$b--}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在使用运算符的时候,不再支持常规函数用法,例如:

    {$user.score+10} //正确的
    {$user['score']+10} //正确的
    {$user['score']*$user['level']} //正确的
    {$user['score']|myFun*10} //错误的
    {$user['score']+myFun($user['level'])} //正确的
    • 1
    • 2
    • 3
    • 4
    • 5

    7.原样输出

    {literal}
        Hello,{$name}!
    {/literal}
    • 1
    • 2
    • 3

    8.系统变量

    1.系统变量($Think开头)
        支持输出 $_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE变量。
        <h2>{$_GET['id']}</h2>
        <h2>{$Think.get.id}</h2>
    
        <h2>{$_SERVER['HTTP_HOST']}</h2>
        <h2>{$_SERVER.HTTP_HOST}</h2>
    
        <h2>{$Think.SERVER.HTTP_HOST}</h2>
    2.常量输出(常量详见附录常量参考)
        <h2>{$Think.const.app_path}</h2>
        <h2>{$Think.const.ds}</h2>
        <h2>{$Think.const.think_path}</h2>
        <h2>{$Think.const.is_win}</h2>
        <h2>{$Think.const.THINK_VERSION}</h2>
    3.配置文件输出(查看配置文件)
        <h2>{$Think.config.app_namespace}</h2>
        <h2>{$Think.config.default_lang}</h2>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    9.请求参数 
    支持直接使用request对象

    {$Request.get.id}
    {$Request.param.name}
    • 1
    • 2

    以$Request.开头的变量输出会认为是系统Request请求对象的参数输出。 
    支持Request类的大部分方法,但只支持方法的第一个参数。

    10.模板注释

    {/* 注释内容 */ } 或 {// 注释内容 } 
    
    {/* 这是模板
    注释内容*/ }
    • 1
    • 2
    • 3
    • 4

    11.页面包含(可以包含多次)

    {include file='Public/header'}
        <div>body</div>
    {include file='Public/footer'}
    • 1
    • 2
    • 3

    12.模板布局

    1.在视图目录下新建文件layout.html(appadminview)
    2.在layout页面中将所有的公共页面保留,非公共页面使用{__CONTENT__}替代(__CONTENT__只能存在一个)
    3.页面中引入模板布局{layout name="layout" /}+非公共区域内容
    
    • 1
    • 2
    • 3
    • 4

    13.模板继承

    1.在视图目录下新建base.html
    2.在base.html中对页面进行分割
        <!DOCTYPE html>
        <html>
            <head>
                <title></title>
            </head>
            <body>
                <div>
                    {block name="nav"}{/block}
                </div>
                <div>
                    {block name="menu"}{/block}
                    {block name="main"}{/block}
                </div>
                <div>
                    {block name="footer"}{/block}
                </div>
            </body>
        </html>
    3.使用继承
        {extend name="base" /}
        {block name="nav"}
            {include file="public/header" /}
        {/block}
        {block name="menu"}
            {include file="public/menu" /}
        {/block}
        {block name="main"}
            {include file="public/content" /}
        {/block}
        {block name="footer"}
            {include file="public/footer" /}
        {/block}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    14.内置标签

    1.volist循环
        {volist name="data" id="val" offset="5" length="3"}
            <p>{$key}:{$val.id}:{$val.name}</p>
        {/volist}
        //区分奇数偶数
        {volist name="data" id="val" mod="2" empty="暂时没有数据"}
            {eq name="mod" value="0"}
                <p style="color: red;">{$key}:{$val.id}:{$val.name}</p>
            {/eq}
            {eq name="mod" value="1"}
                <p>{$key}:{$val.id}:{$val.name}</p>
            {/eq}
        {/volist}
    
        name   需要遍历的数据
        id     类似于foreach中的value
        offset   截取数据的起始位置
        length   截取数据的个数
        mod      奇数偶数
        empty    数据为空时使用
        key      编号
    
    2.foreach循环
        {foreach name="data" item="val"}
            <p>{$key}{$val.id}{$val.name}</p>
        {/foreach}
    
        name 需要遍历的数据
        item 类似于foreach中的value
        key 类似于foreach中的key
    3.for循环
        start   开始值
        end     结束值
        comparison   比较条件(参看下表),默认lt
        step         步数
        name         循环变量(默认i)
        //正序
        {for start="0" end="10" comparison="elt" step="2" name="i"}
            {$i}
        {/for}
        //倒叙
        {for start="10" end="0" comparison="gt" step="-1" name="i"}
            {$i}
        {/for}
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    标签含义
    eq或者 equal 等于
    neq 或者notequal 不等于
    gt 大于
    egt 大于等于
    lt 小于
    elt 小于等于
    heq 恒等于
    nheq 不恒等于
    4.比较标签
        {eq name="a" value="10"}正确{/eq}
        {neq name="a" value="10"}正确{/eq}
        {gt name="a" value="10"}正确{/eq}
        {egt name="a" value="10"}正确{/eq}
        {lt name="a" value="10"}正确{/eq}
        {elt name="a" value="10"}正确{/eq}
        {heq name="a" value="10"}正确{/eq}
        {nheq name="a" value="10"}正确{/eq}
    5.条件判断
        {switch name="week"}
            {case value='1'} 周一{/case}
            {case value='2'} 周二{/case
            {case value='3'} 周三{/case}
            {case value='4'} 周四{/case}
            {case value='5'} 周五{/case}
            {case value='6'} 周六{/case}
            {default /} 周日
        {/switch}
    6.in和notin比较类似
        {in name="week" value="0,1,2,3,4,5,6"}
            合法的数据
        {else /}
            不合法的数据
        {/in}
    7.between和notbetween
        {between name="week" value="0,6"}
            合法数据
        {else /}
            不合法的数据
        {/between}
    8.原生php
        {php}
            echo "123";
        {/php}
        <?php
            echo "123";
        ?>
    9.嵌套使用
        //隔行变色
        {volist name="data" id="val"}
            {if condition="$key % 2"}
                <p style="color: red;">{$key}{$val.id}{$val.name}</p >
            {else /}
                <p style="color: pink;">{$key}{$val.id}{$val.name}</p >
            {/if}
        {/volist}
        //三行变色
        {volist name="data" id="val"}
            {php}
                $sw=$key%3;
            {/php}
            {switch name="sw"}
                {case value="0"}
                    <p style="color: red;">{$key}{$val.id}{$val.name}</p >
                {/case}
                {case value="1"}
                    <p style="color: blue;">{$key}{$val.id}{$val.name}</p >
                {/case}
                {case value="2"}
                    <p style="color: green;">{$key}{$val.id}{$val.name}</p >
                {/case}
            {/switch}
        {/volist}
        //多维数组遍历
        {volist name="type" id="val"}
            <h2>{$val.name}</h2>
            {volist name="val.product" id="goods"}
                <p>{$goods.name}{$goods.price}</p >
            {/volist}
        {/volist}
  • 相关阅读:
    HDU5320 : Fan Li
    BZOJ3069 : [Pa2011]Hard Choice 艰难的选择
    BZOJ4227 : 城市
    BZOJ4216 : Pig
    BZOJ1171 : 大sz的游戏
    BZOJ4182 : Shopping
    BZOJ3482 : [COCI2013]hiperprostor
    BZOJ3919 : [Baltic2014]portals
    BZOJ3711 : [PA2014]Druzyny
    BZOJ1580 : [Usaco2009 Hol]Cattle Bruisers 杀手游戏
  • 原文地址:https://www.cnblogs.com/ZhYQ-Note/p/8626135.html
Copyright © 2011-2022 走看看