zoukankan      html  css  js  c++  java
  • ThinkPHP 模版中的内置标签

    内置标签就是模版引擎提供的一组可以完成控制、循环和判断功能的类似HTML语法的标签。

     

    一、判断比较:

     

    1、if标签进行条件判断

    //if语句的完整格式
    <if condition="$user eq '蜡笔小新'">
    小新
    <elseif condition="$user eq '黑崎一护'" />
    一护
    <else />
    错误
    </if>
    //condition 条件里可以使用 PHP 函数
    <if condition="mb_substr($user,0,3,'UTF-8') eq '蜡笔小'">
    //condition 条件里使用点语法,智能判断数组或对象
    <if condition="$data.user eq '蜡笔小新'">
    //condition 条件里使用冒号语法,直接使用对象
    <if condition="$data:user eq '蜡笔小新'">
    //condition 条件里使用系统变量
    <if condition="$Think.get.user eq '蜡笔小新'"> 

    2、Switch 标签

    //name 的值和 IF语句一样,可以是变量、数组、对象、函数或系统变量
    <switch name="user">(变量不需要$符号)
    <case value="蜡笔小新">小新</case>
    <case value="黑崎一护">一护</case>
    <default />错误
    </switch>

    3、比较标签

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

    //控制器变量$user=蜡笔小新,输出小新
    <eq name="user"value="蜡笔小新">小新</eq>(变量不需要$符号)
    PS:比较标签还提供了一个统一标签 compare,比较类型通过type属性完成。
    //compare 统一方法
    <compare type="eq"name="user"value="蜡笔小新">小新</compare(变量不需要$符号)

    4、范围判断标签

    ThinkPHP 提供了一组范围判断标签:innotinbetweennotbetween四个标签,都用于判断变量是否在某个范围中。
    //如果 id123任意一个将输出
    <in name="id"value="1,2,3">id在范围内</in>
    //in 标签,支持 else
    <in name="id"value="1,2,3">
    id在范围内
    <else/>
    id不在范围内
    </in>
    //notin 标签,正好相反
    <notin name="id"value="1,2,3">id不在范围内</notin>
    //between标签,从哪里到哪里的范围
    <between name="id"value="1,10">id在范围内</between>
    //notbetween标签,从哪里到哪里的范围
    <notbetween name="id"value="1,10">id不在范围内</notbetween
    PS://range标签,可以统一innotinbetweennotbetween
    <range name="id"value="1,2,3"type="in">id在范围内</range>

    PS://name值可以是系统变量
    <in name="Think.get.id"value="1,2,3">id在范围内</in>(变量不需要$符号)
    //value值可以是变量或系统变量
    <in name="id"value="$Think.get.range">id在范围内</in>(变量需要$符号)

    5、判断变量的标签

    //判断变量是否已赋值,赋值了就输出,空字符串、0也算赋值
    <present name="user">user已经赋值</present>
    //判断变量是否已赋值,没有创建或赋值为null,都算没有值
    <notpresent name="user">user还没有值</notpresent>
    //判断变量是否已赋值,组合
    <present name="user">
    user已赋值
    <else />
    user未赋值
    </present>
    //判断变量是否已赋值,系统变量
    <present name="Think.get.user">$_GET['user']已赋值</present

    PS:present标签底层调用的是isset函数

    //判断变量是否为空,空则输出(null、0、空字符串均为未赋值)
    <empty name="user">user为空值</empty>
    //判断变量是否为空,不空则输出
    <notempty name="user">user不为空值</notempty>
    //判断变量是否为空,组合
    <empty name="user">
    user为空值
    <else />
    user不为空值
    </empty>
    //判断变量是否为空,系统变量
    <empty name="Think.get.user">$_GET['user']为空值</empty
    //判断常量是否定义,定义了输出

     

    PS:empty标签底层调用的是empty函数



    <definedname="APP_PATH">APP_PATH常量已定义</defined>
    //判断常量是否定义,没定义输出
    <notdefined name="APP_PATH">APP_PATH常量未定义</notdefined>
    //判断常量是否定义,组合
    <defined name="APP_PATH">
    APP_PATH常量已定义
    <else />
    APP_PATH常量未定义
    </defined>

     


    二、遍历循环

    1、Volist标签

    Volist 标签:通常用于查询数据集的结果输出,通过select()方法返回的是一个二
    维数组,可以直接使用 volist 标签进行输出。
    <ul>
    <volist name="data"id="arr">
    <li>{$arr.id} -- {$arr.user} -- {$arr.mail}</li>
    </volist>
    </ul>
    PS:这里的 name="data"中的data是控制器给模版定义的数据变量,要对应;这里
    id="arr"中的 arr 是将要遍历循环的数组名,可以自定义。
    //offset 从第几条开始,起始值0length共多少条
    <volistname="data"id="arr"offset="5"length="10">
    <li>{$arr.id} -- {$arr.user} -- {$arr.mail}</li>
    </volist>
    //mod 求当前余数,当前index除以21,输出偶数
    <volistname="data"id="vo"mod="2">
    <eq name="mod"value="1">
    <li>{$vo.id} -- {$vo.user} -- {$vo.mail}</li>
    </eq>
    </volist>
    //没有数据的情况下使用empty填充
    <volistname="data"id="vo"empty="没有任何数据">
    <li>{$vo.id} -- {$vo.user} -- {$vo.mail}</li>
    </volist>
    //empty 属性不支持HTML直接输入,但可以通过变量输出
    $this->assign('empty','<span style="color:red">没有任何数据</span>');
    <volistname="data"id="vo"empty="$empty">
    //通过key输出循环遍历的变量
    <volistname="data"id="vo"key="k">
    <li>{$k} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li>
    </volist>
    //没有指定k,也可以用i变量输出
    <li>{$i} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li>
    //key 变量,可以直接输出索引值,从0开始
    <li>{$key} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li>


    2、foreach标签

    Foreach 标签和Volist标签类似,只不过 Foreach 标签更加简单,没有额外属性。
    //只支持key属性,但{$key}变量支持
    <ul>
    <foreach name="data"item="vo">
    <ul>{$vo.id} -- {$vo.user}</ul>
    </foreach>
    </ul>

    3、for标签

    For标签就是简单的循环标签。
    //199循环
    <forstart="1"end="100">
    {$i}<br/>
    </for>
    除了startend必须值,还有三个可选值。comparison是大于还是小于,默认值为lt
    <) ;name是循环变量名,默认值为istep是步进值,默认为1
    //完整形式
    <forstart="1"end="100"comparison="lt"step="2"name="k">
    {$i}<br/>
    </for>

    三.其他标签

    ThinkPHP 模版中还有一些其他标签。
    1、//在模版中定义变量,value值可以为变量($user)或系统变量($Think.get.user
    <assignname="var"value="123" />
    {$var}
    //在模版中定义常量,value值可以为变量($user)或系统变量($Think.get.user
    <definename="MY_NAME"value="Lee" />
    {$Think.const.MY_NAME}

    2、import导入标签可以智能的导入 js css 文件
    //常规引入方法
    <scripttype="text/javascript"src="__PUBLIC__/js/index.js"></script>
    <link rel="stylesheet"type="text/css"
    href="__PUBLIC__/css/index.css" />
    //使用import 导入,jscss是目录
    <importtype="js"file="js.index" />
    <import type="css"file="css.index" />
    //使用import 导入,basepath修改默认路径
    <importtype="js"file="js.index"basepath="./Common" />

    3、load加载标签可以智能的加载 js css 文件
    //使用load 加载
    <loadhref="__PUBLIC__/js/index.js" />
    <load href="__PUBLIC__/css/index.css" />
    系统还提供了专用 jscss标签,专门用于加载

    4、//使用专用标签
    <jshref="__PUBLIC__/js/index.js" />
    <css href="__PUBLIC__/css/index.css" />

    5、PHP代码可以和标签在模版文件中混合使用, 可以在模版文件里面书写任意的 PHP语句
    代码。
    //使用php 标签
    <php>
    $a = 1;
    $b = 2;
    echo $a + $b;
    </php>
    //使用php 语法
    <?php
    $a = 1;
    $b = 2;
    echo $a + $b;
    ?>

    6、如果想原样输出标签极其内容,可以使用literal 标签
    //原样输出
    <literal>
    <php>echo 123;</php>
    </literal>

  • 相关阅读:
    vue实战使用ajax请求后台数据(小白)
    jQuery实现tab栏切换效果
    jQuery下的ajax实例
    数据库之视图更新
    SQL Server 全文索引创建
    SQL Server 分区表
    数据快照 (Database Snapshot)
    FileStream
    ODBC,OLEDB,ADO,ADO.net,JDBC 理解
    拖延症?贪玩?来试试"百万金币时间管理法"
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9082785.html
Copyright © 2011-2022 走看看