Blogger Information
Blog 8
fans 0
comment 0
visits 7379
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
5.30 使用foreach和volist标签分别实现模板数据的分页显示
Allen的php博客
Original
1695 people have browsed it

使用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}


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!