zoukankan      html  css  js  c++  java
  • thinkphp 模板

    一. 模板函数  教程https://www.kancloud.cn/manual/thinkphp5/125005

    我们往往需要对模板输出变量使用函数,可以使用:

    {$data.name|md5} 

    编译后的结果是:

    <?php echo (md5($data['name'])); ?>

    2. ###占位符

    如果函数有多个参数需要调用,则使用:

    {$create_time|date="y-m-d",###}

    表示date函数传入两个参数,每个参数用逗号分割,这里第一个参数是y-m-d,第二个参数是前面要输出的create_time变量,因为该变量是第二个参数,因此需要用###标识变量位置,编译后的结果是:

    <?php echo (date("y-m-d",$create_time)); ?>

    二.输出默认值

    我们可以给变量输出提供默认值,例如:

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

    默认值和函数可以同时使用,例如:

    {$Think.get.name|getName|default="名称为空"}

    三. 运算符

    我们可以对模板输出使用运算符,包括对“+”“-” “*” “/”和“%”的支持。

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

    {$user.score+10} //正确的
    {$user['score']+10} //正确的
    {$user['score']*$user['level']} //正确的
    {$user['score']|myFun*10} //错误的
    {$user['score']+myFun($user['level'])} //正确的

    四. 不输出模板变量的值, 而是原样输出,需要计入literal 标签

    {literal}
    {$email|md5}
    {/literal}

    五.模板注释

    使用模板注释, 注释不会输出到客服端

    格式 {/* */}  

    {/* 我是注释*/}
    {literal}
    {$email|md5}
    {/literal}

    六. 模板标签

    1. 循环标签 VOLIST标签

      volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。 在控制器中首先对模版赋值:

    {/* 我是注释*/}
    {/* name为后台传递的数组,  id为循环代号, offset为循环开始的数组下标, length为循环数组下标最大值,
     empty数组为空时输出empty, key为list的key名称, */}
    {/* mod 输出偶数记录  还可以用来控制一定记录换行 */}
    {volist name ="list" id = "data" offset="1" length="3" mod="2" empty="没有数据,我也可以接收变量" }
    {eq name="mod" value="2"}<br/>{/eq}
    <o>{$key}.{$data.email} <br /></o> {/volist} <p>test</p>
    {/*的key=“k" 循环序号默认为i */}
    {volist name ="list" id = "data" offset="1" length="3" key="k" empty="没有数据,我也可以接收变量" }
    <o>{$k}.{$data.email} <br /></o>
    {/volist}
    <p>test</p>

    2. 循环标签foreach

    <body>
    {/* 我是注释*/}
    {foreach $list as $vo }
    <p>{$vo.name}:&emsp;{$vo.email} </p>
    {/foreach}
    {foreach name="list"  item="vo" key="s" }
    <p>  {$s}&emsp;{$vo.name}:&emsp;{$vo.email} </p>
    {/foreach}
    
    {foreach name="list"  item="vo"  }
    <p> {$key}&emsp;{$vo.name}:&emsp;{$vo.email} </p>
    {/foreach}
    </body>

    循环标签volist https://www.kancloud.cn/manual/thinkphp5/125017

    Volist标签主要用于在模板中循环输出数据集或者多维数组。

    {volist name="list" id="vo"}
    {$vo.id}:{$vo.name}<br/>
    {/volist}  

    3.for标签

    <body>
    {for start="1" end="30" step="2" name="k"}
    <p>{$k}</p>
    {/for}
    {/* 效果等同于在php使用(上式变量符号默认为i 可以用name重定义
    for($i = 1; $i < 30; $i+=2)
    echo '<p>$i</p>'; */}
    </body>

     4.比较标签

    系统支持的比较标签以及所表示的含义分别是:

    标签含义
    eq或者 equal 等于
    neq 或者notequal 不等于
    gt 大于
    egt 大于等于
    lt 小于
    elt 小于等于
    heq 恒等于
    nheq 不恒等于

    语法

    {比较标签 name="变量" value="值"}
    内容
    {/比较标签}

    使用方法

    {eq name="name" value="value"}value{/eq}

    或者

    {equal name="name" value="value"}value{/equal}

    也可以支持和else标签混合使用:

    {eq name="name" value="value"}
    相等
    {else/}
    不相等
    {/eq}

    而且还可以支持对变量使用函数 当vo对象的属性值的字符串长度等于5就输出

    {eq name="vo:name|strlen" value="5"}{$vo.name}{/eq}

    5条件判断 if  switch

    1). SWITCH标签

    用法:

    {switch name="变量" }
        {case value="值1" break="0或1"}输出内容1{/case}
        {case value="值2"}输出内容2{/case}
        {default /}默认情况
    {/switch}

    使用方法如下:

    {switch name="Think.get.type"}
        {case value="gif|png|jpg"}图像格式{/case}
        {default /}其他格式
    {/switch}

    表示如果$_GET["type"] 是gif、png或者jpg的话,就判断为图像格式。

    2).IF标签

    用法示例:

    {if condition="($name == 1) OR ($name > 100) "} value1
    {elseif condition="$name eq 2"/}value2
    {else /} value3
    {/if}

    除此之外,我们可以在condition属性里面使用php代码,例如:

    {if condition="strtoupper($user['name']) neq 'THINKPHP'"}ThinkPHP
    {else /} other Framework
    {/if}

    condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象

    {if condition="$user.name neq 'ThinkPHP'"}ThinkPHP
    {else /} other Framework
    {/if}

    或者知道user变量是对象

    {if condition="$user:name neq 'ThinkPHP'"}ThinkPHP
    {else /} other Framework
    {/if}

    3).范围判断

    范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围。

    IN和NOTIN

    我们可以使用in标签来判断模板变量是否在某个范围内,例如:

    {in name="id" value="1,2,3"}
    id在范围内
    {/in}
    

    最后会输出:id在范围内

    如果判断不在某个范围内,可以使用notin标签:

    {notin name="id" value="1,2,3"}
    id不在范围内
    {/notin}
    

    最后会输出:id不在范围内

    可以把上面两个标签合并成为:

    {in name="id" value="1,2,3"}
    id在范围内
    {else/}
    id不在范围内
    {/in}

    我们可以使用in标签来判断模板变量是否在某个范围内,例如:

    {in name="id" value="1,2,3"}
    id在范围内
    {/in}
    

    最后会输出:id在范围内

    如果判断不在某个范围内,可以使用notin标签:

    {notin name="id" value="1,2,3"}
    id不在范围内
    {/notin}

    最后会输出:id不在范围内

    可以把上面两个标签合并成为:

    {in name="id" value="1,2,3"}
    id在范围内
    {else/}
    id不在范围内
    {/in}

     4).BETWEEN 和 NOTBETWEEN

    可以使用between标签来判断变量是否在某个区间范围内,可以使用:

    {between name="id" value="1,10"}
    输出内容1
    {/between}

    同样,也可以使用notbetween标签来判断变量不在某个范围内:

    {notbetween name="id" value="1,10"}
    输出内容2
    {/notbetween}

    也可以使用else标签把两个用法合并,例如:

    {between name="id" value="1,10"}
    输出内容1
    {else/}
    输出内容2
    {/between}

    当使用between标签的时候,value只需要一个区间范围,也就是只支持两个值,后面的值无效,例如

    5). RANGE

    也可以直接使用range标签,替换前面的判断用法:

    {range name="id" value="1,2,3" type="in"}
    输出内容1
    {/range}

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

    6). PRESENT NOTPRESENT标签

    present标签用于判断某个变量是否已经定义,用法:

    {present name="name"}
    name已经赋值
    {/present}

    如果判断没有赋值,可以使用:

    {notpresent name="name"}
    name还没有赋值
    {/notpresent}

    可以把上面两个标签合并成为:

    {present name="name"}
    name已经赋值
    {else /}
    name还没有赋值
    {/present}

    7).EMPTY NOTEMPTY 标签

    empty标签用于判断某个变量是否为空,用法:

    {empty name="name"}
    name为空值
    {/empty}

    如果判断没有赋值,可以使用:

    {notempty name="name"}
    name不为空
    {/notempty}

    可以把上面两个标签合并成为:

    {empty name="name"}
    name为空
    {else /}
    name不为空
    {/empty}

    8).DEFINED 标签

    DEFINED标签用于判断某个常量是否有定义,用法如下:

    {defined name="NAME"}
    NAME常量已经定义
    {/defined}

    name属性的值要注意严格大小写

    如果判断没有被定义,可以使用:

    {notdefined name="NAME"}
    NAME常量未定义
    {/notdefined}

    可以把上面两个标签合并成为:

    {defined name="NAME"}
    NAME常量已经定义
    {else /}
    NAME常量未定义
    {/defined}

     三.模板引入标签

    {include file=”文件路径/文件" /}

    四.模板继承

     

  • 相关阅读:
    Android开源框架——Volley
    Android中的事件传递机制
    @ViewDebug.ExportedProperty的使用
    字符间距——扩展
    读取assets文件夹下图片(ods_interview)
    Android消息推送——JPush极光推送
    深入模块
    正则表达式和re模块
    初识模块
    迭代器和生成器
  • 原文地址:https://www.cnblogs.com/jiangfeilong/p/11209292.html
Copyright © 2011-2022 走看看