博客列表 >5.30 使用foreach和volist标签分别实现模板数据的分页显示

5.30 使用foreach和volist标签分别实现模板数据的分页显示

Allen的php博客
Allen的php博客原创
2018年06月01日 09:56:571680浏览

使用foreach和volist标签分别实现模板数据的分页显示:

〓 在application\admin\controller中创建User.php


<?php

/**

 * 后台首页控制器

 */

namespace app\admin\controller;

use think\Controller;  //导入基类

use app\admin\model\User as UserModel; //导入模型类


class User extends Controller

{


    public function list()

    {

        /**

         * 知识点:循环标签、分页

         *

         * 技巧:

         * 1. 模板中注释:单行注释:{//单行注释},多行注释{/*多行注释*\/},在源代码中会删除

         * 2. 模板中的数据不一定都来源于控制器,可以通过模型在当前模板中直接获取:

         *    A、{//在当前模板中创建变量,来保存数据表中的数据}

         *      {assign name="users" value=":\app\admin\model\User::all()"}

         *      因为"\app\admin\model\User::all()"是一条可执行的语句,需要在前加上":"

         *    B、通过助手函数model来进行简化:

         *      {assign name="users" value=":model('user')::all()"}

         * 3. 数据判断,范围限定:

         * {in}:是一个离散的数据,没有连贯性

         * 例:{//性别必须是0或1,才是合法数据}

              {in name="user.sex" value="0,1"}

              {if $user.sex == 0}

              男

              {else /}

              女

              {/if}

              {/in}

         * {between}:是一个连续的数据

         * 例:{between name="user.age" value="20,30"}

         *     很年轻嘛

         *     {/between}

         *     {between name="user.age" value="31,50"}

         *     人到中年

         *     {else /}

         *     该退休了

         *     {/between}

         *

         * 循环标签:

           一、foreach标签:类似于原生foreach

           二、volist标签:使用最广泛,参数众多,功能强大

              1. name=""中的名称不能更改,是控制器传入过来的变量名称

              2. id=""中的名称可自定义,是临时变量

              3. 输出从第5条开始显示5条的数据,加入属性offset="4" length="5"

              4. 只显示偶数行数据:模除运算,就是求余数

                 ① 属性中加入mod="2"

                 ② 使用比较标签:{eq name="mod" value="1"}{/eq} //偶数(value="1"),奇数(value="0")

              5. 判断数据是否为空:

                {empty name="users"}

                为空提示

                {else /}

                不为空时显示的数据

                {/empty}

         *

         * 分页步骤:

         * 1.分页配置

         * 2.设置每页显示数据数

         * 3.设置是否为简单分页

         * 4.获取分页所有数据:UserModel::paginate($num, $simple, $config)

         * 5.渲染分页HTML代码,返回分页变量

         * 6.将分页数据和分页变量赋值给模板

         */


        //通过模板获取user表中的数据

        $users = UserModel::all(function($query){

            $query->field(['id','name','sex','email','create_time','update_time','delete_time']);

        });

        //halt($users);//测试数据是否获取后自动结束程序


        //模板赋值

        $this->view->assign('users',$users);



        //分页

        //进行分页配置

        $config = [

            'type' => 'bootstrap',

            'var_page' => 'page'

        ];


        //设置每页显示的数据

        $num = 5;


        //设置是否简单分页:上一页,下一页

        $simple = false;


        //用模型来获取所有分页数据:think\Paginate

        //返回的是一个对象,paginate(显示数据条数, 是否是简单分页, 分页配置)参数顺序不能错

        $paginate = UserModel::paginate($num, $simple, $config);


        //渲染分页HTML代码,返回分页变量

        $page = $paginate->render();


        //将分页数据赋值给模板

        $this->view->assign('users', $paginate);


        //将分页变量赋值给模板

        $this->view->assign('page', $page);


        //渲染模板

        return $this->view->fetch();


    }

}


〓 模板文件:app\admin\model\User.php


<?php

/**

 * 用户表User模型

 */

namespace app\admin\model;

use think\Model;


class User extends Model

{

    //设置数据库表命

    protected $table = 'user';


    //设置数据表主键

    protected $pk = 'id';


}


〓 视图模板文件:


{//继承父模板}

{extend name="public/base" /}


{block name="meta"}

{include file="public/meta" /}

{/block}


{block name="SEO"}

<title>会员列表 - 会员管理 - H-ui.admin v3.0</title>

<meta name="keywords" content="H-ui.admin v3.0,H-ui网站后台模版,后台模版下载,后台管理系统模版,HTML后台模版下载">

<meta name="description" content="H-ui.admin v3.0,是一款由国人开发的轻量级扁平化网站后台模板,完全免费开源的网站后台管理系统模版,适合中小型CMS后台系统。">

</head>

<body>

{/block}


{block name="header"}

{include file="public/header" /}

{/block}


{block name="menu"}

{include file="public/menu" /}

{/block}


{block name="main"}

<section class="Hui-article-box">

<nav class="breadcrumb"><i class="Hui-iconfont">&#xe67f;</i> 首页 <span class="c-gray en">&gt;</span> 用户中心 <span class="c-gray en">&gt;</span> 会员列表<a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" href="javascript:location.replace(location.href);" title="刷新" ><i class="Hui-iconfont">&#xe68f;</i></a></nav>

<div class="Hui-article">

<article class="cl pd-20">

<div class="text-c"> 日期范围:

<input type="text" onfocus="" id="datemin" class="input-text Wdate" style="width:120px;">

<input type="text" onfocus="" id="datemax" class="input-text Wdate" style="width:120px;">

<input type="text" class="input-text" style="width:250px" placeholder="输入会员名称、电话、邮箱" id="" name="">

<button type="submit" class="btn btn-success radius" id="" name=""><i class="Hui-iconfont">&#xe665;</i> 搜用户</button>

</div>

<div class="cl pd-5 bg-1 bk-gray mt-20"> <span class="l"><a href="javascript:;" onclick="datadel()" class="btn btn-danger radius"><i class="Hui-iconfont">&#xe6e2;</i> 批量删除</a> <a href="javascript:;" onclick="member_add('添加用户','member-add.html','','510')" class="btn btn-primary radius"><i class="Hui-iconfont">&#xe600;</i> 添加用户</a></span> <span class="r">共有数据:<strong>88</strong> 条</span> </div>

<div class="mt-20">

<table class="table table-border table-bordered table-hover table-bg table-sort">

<thead>

<tr class="text-c">

<th width="25"><input type="checkbox" name="" value=""></th>

<th width="80">ID</th>

<th width="100">用户名</th>

<th width="40">性别</th>

<th width="90">邮箱</th>

<th width="150">加入时间</th>

<th width="130">更新时间</th>

<th width="70">状态</th>

<th width="100">操作</th>

</tr>

</thead>

<tbody>


{//assign name="users" value=":model('user')::all()"}

<!--{foreach $users as $user}

<tr class="text-c">

<td><input type="checkbox" value="1" name=""></td>

<td>{$user.id}</td>

<td>{$user.name}</td>

<td>{$user.sex}</td>

<td>{$user.email}</td>

<td>{$user.create_time}</td>

<td>{$user.update_time}</td>

<td>{$user.delete_time}</td>

<td class="td-manage"><a style="text-decoration:none" onClick="member_stop(this,'10001')" href="javascript:;" title="停用"><i class="Hui-iconfont">&#xe631;</i></a> <a title="编辑" href="javascript:;" onclick="member_edit('编辑','member-add.html','4','','510')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe6df;</i></a> <a style="text-decoration:none" class="ml-5" onClick="change_password('修改密码','change-password.html','10001','600','270')" href="javascript:;" title="修改密码"><i class="Hui-iconfont">&#xe63f;</i></a> <a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe6e2;</i></a></td>

</tr>

{/foreach}-->


{empty name="users"}

<tr class="text-c">

<td colspan="9">数据为空</td>

</tr>

{else /}


{volist name="users" id="user"}

<tr class="text-c">

<td><input type="checkbox" value="1" name=""></td>

<td>{$user.id}</td>

<td>{$user.name}</td>

<td>

{//$user.sex}

{//性别必须是0或1,才是合法数据}

{in name="user.sex" value="0,1"}

{if $user.sex == 0}

{else /}

{/if}

{/in}

</td>

<td>{$user.email}</td>

<td>{$user.create_time}</td>

<td>{$user.update_time}</td>

<td>{$user.delete_time}</td>

<td class="td-manage"><a style="text-decoration:none" onClick="member_stop(this,'10001')" href="javascript:;" title="停用"><i class="Hui-iconfont">&#xe631;</i></a> <a title="编辑" href="javascript:;" onclick="member_edit('编辑','member-add.html','4','','510')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe6df;</i></a> <a style="text-decoration:none" class="ml-5" onClick="change_password('修改密码','change-password.html','10001','600','270')" href="javascript:;" title="修改密码"><i class="Hui-iconfont">&#xe63f;</i></a> <a title="删除" href="javascript:;" onclick="member_del(this,'1')" class="ml-5" style="text-decoration:none"><i class="Hui-iconfont">&#xe6e2;</i></a></td>

</tr>

{/volist}


{/empty}


</tbody>

</table>

{load href="/static/h-ui/css/Bootstrap.css" /}

{$page|raw}


</div>

</article>

</div>

</section>

{/block}


{block name="js"}

<!--请在下方写此页面业务相关的脚本-->

{load href="/lib/My97DatePicker/4.8/WdatePicker.js" /}

{load href="/lib/datatables/1.10.0/jquery.dataTables.min.js" /}

{load href="/lib/laypage/1.2/laypage.js" /}

<script type="text/javascript">

    $(function(){

        $('.table-sort').dataTable({

            "aaSorting": [[ 1, "desc" ]],//默认第几个排序

            "bStateSave": true,//状态保存

            "aoColumnDefs": [

                //{"bVisible": false, "aTargets": [ 3 ]} //控制列的隐藏显示

                {"orderable":false,"aTargets":[0,8,9]}// 制定列不参与排序

            ]

        });

        $('.table-sort tbody').on( 'click', 'tr', function () {

            if ( $(this).hasClass('selected') ) {

                $(this).removeClass('selected');

            }

            else {

                table.$('tr.selected').removeClass('selected');

                $(this).addClass('selected');

            }

        });

    });

    /*用户-添加*/

    function member_add(title,url,w,h){

        layer_show(title,url,w,h);

    }

    /*用户-查看*/

    function member_show(title,url,id,w,h){

        layer_show(title,url,w,h);

    }

    /*用户-停用*/

    function member_stop(obj,id){

        layer.confirm('确认要停用吗?',function(index){

            $(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" onClick="member_start(this,id)" href="javascript:;" title="启用"><i class="Hui-iconfont">&#xe6e1;</i></a>');

            $(obj).parents("tr").find(".td-status").html('<span class="label label-defaunt radius">已停用</span>');

            $(obj).remove();

            layer.msg('已停用!',{icon: 5,time:1000});

        });

    }


    /*用户-启用*/

    function member_start(obj,id){

        layer.confirm('确认要启用吗?',function(index){

            $(obj).parents("tr").find(".td-manage").prepend('<a style="text-decoration:none" onClick="member_stop(this,id)" href="javascript:;" title="停用"><i class="Hui-iconfont">&#xe631;</i></a>');

            $(obj).parents("tr").find(".td-status").html('<span class="label label-success radius">已启用</span>');

            $(obj).remove();

            layer.msg('已启用!',{icon: 6,time:1000});

        });

    }

    /*用户-编辑*/

    function member_edit(title,url,id,w,h){

        layer_show(title,url,w,h);

    }

    /*密码-修改*/

    function change_password(title,url,id,w,h){

        layer_show(title,url,w,h);

    }

    /*用户-删除*/

    function member_del(obj,id){

        layer.confirm('确认要删除吗?',function(index){

            $(obj).parents("tr").remove();

            layer.msg('已删除!',{icon:1,time:1000});

        });

    }

</script>

<!--/请在上方写此页面业务相关的脚本-->

{/block}


{block name="footer"}

{include file="public/footer" /}

{/block}


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议