thinkphp的其他方式的模版输出

<?php
/*
    +-----------------------------------------------------------------------------------------------------------+
    thinkphp的使用之模版输出:
    
    volist标签:
    在模块操作中,select()方法返回的是一个二维数组,可以用volist直接输出:
    
    <volist name="list" id="vo">
        用户名:{$vo['username']}<br/>
        电子邮件:{$vo['email']}<br/>
        注册时间:{$vo['regdate']|date="Y-m-d H:i",###}
    </volist>
    注意:name的属性值list(name="list")不可随意改变,需要与操作中的模版赋值指令对应.
    $this->assign("list",$list);

    id表示可以循环变量,可以随意指定,但不能与name属性冲突.

    输出部分数据
    如果要输出结果中的部分数据,需要指定offset(数据指针)与length(数据数据条数)属性.
    输出第5~14条数据:
    <volist name="list" id="vo" offset="5" length='10'>
    用户名:{$vo['username']}<br/>
    电子邮件:{$vo['email']}<br/>
    注册时间:{$vo['regdate']|date="Y-m-d H:i",###}
    <hr/>
    </volist>

    输出奇/偶数记录
    volist中的mod相当于指定一个频率,系统会将当前的实际记录对mod参数值求余(PHP中的%运算符).而配合判断标签(如eq标签),捷可以按照频率控制输出的数据或数据显示的格式.

    例如:输出偶数记录:
    <volist name="list" id="vo" mod="2">
    <eq name="mod" value="0">
    用户名:{$vo['username']}<br/>
    电子邮件:{$vo['email']}<br/>
    注册时间:{$vo['regdate']|date="Y-m-d H:i",###}
    <hr/>
    </eq>
    </volist>

    输出所有的记录,但让表格隔行显示不同的背景颜色的例子:
    <table>
        <volist name="list" id="vo" mod="2">
            <tr<eq name="mod" value="0">style="background-color:#FFF;"</eq>>
            <td>我是单元格</td>
            <td>我也是单元格</td>
        </volist>
    </table>
    实际中可以灵活设定mod参数的值,而不仅仅限于奇偶.

    输出循环变量

    指定key属性用于输出循环的变量次数(注意不是数据表主键id)
    <volist name="list" id="vo" key="k">
    序号:{$k}<br/>
    用户名:{$vo['username']}<br/>
    电子邮件:{$vo['email']}<br/>
    注册时间:{$vo['regdate']|date="Y-m-d H:i",###}
    <hr/>
    </volist>

    输出数组索引:
    直接使用$key变量用于输出数组索引:
    <volist name="list" id="vo">
        数组key:{$key}<br/>
        用户名:{$vo['username']}<br/>
        电子邮件:{$vo['email']}<br/>
        注册时间:{$vo['regdate']|date="Y-m-d H:i",###}
        <hr/>
    </volist>
    +-----------------------------------------------------------------------------------------------------------+
    Thinkphp模版变量输出

    {$变量}
    {$username}            //普通变量
    {$userinfo['email']}            //数组方式
    {$userinfo['sub']['name']}        //三维数组
    {$userinfo:email}                //对象形式
    {$userinfo.email}                //自动判断数组或对象方式


    默认输出:
    如果输出模版变量没有任何值,但是我们需要在显示的时候赋予一个默认值的话,可以使用default语法来默认显示一个值
    {$变量|default="默认值"}

    例子;
    {$username|default="匿名"}

    使用函数
    对模版变量使用函数

    模版引擎支持对输出的变量做格式化处理,也是使用函数,并且支持多个函数.
    格式:
        {$变量|函数1|....|函数n=参数1,...,参数n,###}
    函数从左往右对变量执行,先执行函数1,得到结果后执行函数2,依次类推,并且默认情况下执行的结果作为下一个函数第一个参数

    例子:
    {$webTitle|md5|strtoupper|substr=0,3}

    实际执行结果等效为:
    <?php
        echo substr(strtoupper(md5($webTitle)),0,3);
    ?>
    如果变量或上函数执行的结果不是函数或下一个函数的第一个参数,那么需要使用定位符"###":
    {$userinfo['regdate']|date="Y-m-d H:i",###}

    实际等效的结果为:
    <?php
        echo date("Y-m-d H:i",$userinfo['regdate']|);
    ?>

    提示:
    对变量使用函数没有数量限制,但默认禁用了exit和echo函数,以防止模版破坏模版输出.

    模版中直接使用函数:
    1.执行函数并输出返回值
        {:$函数}
    例子:{:say_hello('ThinkPHP')}    //say_hello()为用户自定义函数
    实际执行的结果等效为:
    <?php
        echo say_hello("ThinkPHP");
    ?>
    2.执行函数但不输出
    格式:
    {~函数}
    例子:
    {~say_hello("ThinkPHP")}        //say_hello()为用户自定义函数
    实际等效为
    <?php
        say_hello('ThinkPHP');
    ?>
    以上方法也支持传入模版变量作为函数的参数.

    系统变量的输出:
    系统变量宝包含:server,session,post,get,request,cookie,env.系统变量的输出不需要事先要赋值给某个模版变量.系统变量的输出以$Think.开头,并且仍然支持使用函数.
    例子:
    {$Think.session.session_id|md5}    //输出$_SESSION变量并使用md5加密
    //或者简写为
    {$_SESSION.session_id|md5}
    //输出$_GET变量
    {$_GET.pageNumber}

    系统常量输出:
    使用$Think.const输出系统常量;
    例子:
    {$Think.const.ACTION_NAME}        //输出Thinkphp系统定义的常量ACTION_NAME
    //或者简写为
    {$Think.ACTION_NAME}

    配置参数输出
    使用$Think.config输出项目的配置参数值

    例子:
    {$Think.config.DB_PREFIX}
    输出的值和C('DB_PREFIX')的返回结果是一样的.
    快捷输出:
    包括:
    {@var}与{$Think.session.var}等效,输出Session变量
    {#var}与{$Think.cookie.var}等效,输出Cookie变量
    {&var}与{$Think.config.var}等效,输出配置参数
    {%var}与{$Think.lang.var}等效,输出语言变量
    {.var}与{$Think.get.var}等效,输出GET变量
    {^var}与{$Think.post.var}等效,输出POST变量
    {*var}与{$Think.const.var}等效,输出常量
    +-----------------------------------------------------------------------------------------------------------+
        
?>   

posted @ 2012-09-22 18:39  sgsheg  阅读(390)  评论(0编辑  收藏  举报