美文网首页
[PHP高可用后端]①⑥--列表页面开发之引入laypage

[PHP高可用后端]①⑥--列表页面开发之引入laypage

作者: 子木同 | 来源:发表于2017-11-09 14:10 被阅读19次
222.png

调试

<?php
namespace app\common\model;

class News extends Base
{

    public function getNews($data = [])
    {
        $data['status'] = [
            'neq', config('code.status_delete')];
        $order = ['id' => 'desc'];

        $result = $this->where($data)
            ->order($order)
            ->paginate();

        //调试
        echo $this->getLastSql();
        /**
         * SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 0,3                 <>
         * SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 3,3                 <>
         */

        return $result;
    }
}

laypage

http://www.layui.com/demo/laypage.html

News.php(mdoel)

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/8
 * Time: 16:43
 */

namespace app\common\model;

class News extends Base
{

    public function getNews($data = [])
    {
        $data['status'] = [
            'neq', config('code.status_delete')];
        $order = ['id' => 'desc'];

        $result = $this->where($data)
            ->order($order)
            ->paginate();

        //调试
        echo $this->getLastSql();
        /**
         * SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 0,3                 <>
         * SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 3,3                 <>
         */

        return $result;

    }

    /**
     * 根据来获取列表的数据
     * @param array $param
     */
    public function getNewsByCondition($param = [])
    {
        $condition['status'] = [
            'neq', config('code.status_delete')];
        $order = ['id' => 'desc'];

        $from = ($param['page'] - 1) * $param['size'];

        $result = $this->where($condition)
            ->limit($from, $param['size'])
            ->order($order)
            ->select();

        //SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 0,3
        //echo $this->getLastSql();

        return $result;

    }

    /**
     * 根据条件来获取列表的数据的总数
     * @param array $param
     */
    public function getNewsCountCondition($param = [])
    {
        $condition['status'] = [
            'neq', config('code.status_delete')];
       return  $this->where($condition)
            ->count();

        //SELECT COUNT(*) AS tp_count FROM `ent_news` WHERE `status` <> -1 LIMIT 1
        //echo $this->getLastSql();

    }
}
/**
     * 根据来获取列表的数据
     * @param array $param
     */
    public function getNewsByCondition($param = [])
    {
        $condition['status'] = [
            'neq', config('code.status_delete')];
        $order = ['id' => 'desc'];

        $from = ($param['page'] - 1) * $param['size'];

        $result = $this->where($condition)
            ->limit($from, $param['size'])
            ->order($order)
            ->select();

        //SELECT * FROM `ent_news` WHERE `status` <> -1 ORDER BY `id` desc LIMIT 0,3
        //echo $this->getLastSql();

        return $result;

    }

    /**
     * 根据条件来获取列表的数据的总数
     * @param array $param
     */
    public function getNewsCountCondition($param = [])
    {
        $condition['status'] = [
            'neq', config('code.status_delete')];
       return  $this->where($condition)
            ->count();

        //SELECT COUNT(*) AS tp_count FROM `ent_news` WHERE `status` <> -1 LIMIT 1
        //echo $this->getLastSql();

    }
}

Base.php(Controller)

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/8
 * Time: 15:14
 */

namespace app\admin\controller;

use think\Controller;

class Base extends Controller
{
    /**
     * page
     * @var string
     */
    public $page = '';

    /**
     * 每页显示多少条
     * @var string
     */
    public $size = '';


    protected function _initialize()
    {
        $isLogin = $this->isLogin();
        if (!$isLogin) {
            $this->redirect('login/index');
        }
    }

    public function isLogin()
    {
        $user = session(config('admin.session_user'), '',
            config('admin.session_user_scope'));
        if ($user && $user->id) {
            return true;
        }
        return false;
    }

    /**
     * 获取分页page size内容
     */
    public function getPageAndSize($data)
    {
        $this->page = !empty($data['page']) ? $data['page'] : 1;
        $this->size = !empty($data['size']) ? $data['size'] : config('paginate.list_rows');
    }

}
   * page
     * @var string
     */
    public $page = '';

    /**
     * 每页显示多少条
     * @var string
     */
    public $size = '';

  /**
     * 获取分页page size内容
     */
    public function getPageAndSize($data)
    {
        $this->page = !empty($data['page']) ? $data['page'] : 1;
        $this->size = !empty($data['size']) ? $data['size'] : config('paginate.list_rows');
    }

News.php(Controller)

<?php
/**
 * Created by PhpStorm.
 * User: tong
 * Date: 2017/11/8
 * Time: 15:21
 */

namespace app\admin\controller;

class News extends Base
{

    public function index()
    {
        $data = input('param.');
        //模式一
        //$news = model('News')->getNews();
        //模式二
        //page size limit from size
        $whereData = [];
        $this->getPageAndSize($data);
        $whereData['page'] = $this->page;
        $whereData['size'] = $this->size;

        //获取表里面的数据
        $news = model('News')->getNewsByCondition($whereData);
        //获取满足条件的数据总数=》有多少页
        $total = model('News')->getNewsCountCondition($whereData);
        //结合总数+size =>有多少页
        //1.1=>2
        $pageTotal = ceil($total / $whereData['size']);


        return $this->fetch('', [
            'news' => $news,
            'pageTotal' => $pageTotal,
            'curr' => $whereData['page']
        ]);
    }

    public function add()
    {
        if (request()->isPost()) {
            $data = input('post.');
            try {
                $id = model('News')->add($data);
            } catch (\Exception $e) {
                return $this->result('', 0, '新增失败:' . $e->getMessage());
            }

            if ($id) {
                return $this->result([
                    'jump_url' => url('news/index')], 1, 'OK');
            } else {

                return $this->result('', 0, '新增失败');
            }
        } else {
            return $this->fetch('', [
                'cats' => config('cat.list')
            ]);
        }
    }
}

index.php

<!--header-->
{include file="public/_meta" title="娱乐资讯"/}
<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="page-container">
    <div class="text-c">
        <form action="" method="get">
   <span class="select-box inline">
    <select name="catid" class="select">
          <option value="0">全部分类</option>
          <option value=""></option>
        </select>
    </span> 日期范围:
            <input type="text" name="start_time" class="input-text" id="countTimestart" onfocus="selecttime(1)" value=""
                   style="width:120px;">
            -
            <input type="text" name="end_time" class="input-text" id="countTimestart" onfocus="selecttime(1)" value=""
                   style="width:120px;">

            <input type="text" name="title" id="" value="" placeholder=" 资讯名称" style="width:250px" class="input-text">
            <button name="" id="" class="btn btn-success" type="submit"><i class="Hui-iconfont">&#xe665;</i> 搜资讯
            </button>
        </form>
    </div>

    <div class="mt-20">
        <table class="table table-border table-bordered table-bg table-hover table-sort table-responsive">
            <thead>
            <tr class="text-c">
                <th width="25"><input type="checkbox" name="" value=""></th>
                <th width="80">ID</th>
                <th>标题</th>
                <th width="80">分类</th>
                <th width="80">缩图</th>
                <th width="120">更新时间</th>
                <th width="40">是否推荐</th>
                <th width="60">发布状态</th>
                <th width="120">操作</th>
            </tr>
            </thead>
            <tbody>

            {volist name="news" id="vo" }
            <tr class="text-c">
                <td><input type="checkbox" value="" name=""></td>
                <td>{$vo.id}</td>
                <td class="text-l"><u style="cursor:pointer" class="text-primary" title="查看">{$vo.title}</u></td>
                <td>{$vo.catid|getCatName}</td>
                <td><img width="60" height="60" class="picture-thumb" src="{$vo.image}"></td>
                <td>{$vo.update_time}</td>
                <td>{$vo.is_position|isYesNo}</td>
                <td class="td-status">{$vo.is_position}</td>
                <td class="f-14 td-manage"><a style="text-decoration:none" class="ml-5"
                                              onClick="article_edit('资讯编辑','article-add.html','10001')"
                                              href="javascript:;" title="编辑"><i class="Hui-iconfont">&#xe6df;</i></a> <a
                        style="text-decoration:none" class="ml-5" onClick="" href="javascript:;" title="删除"
                        del_url=""><i class="Hui-iconfont">&#xe6e2;</i></a></td>
            </tr>
            {/volist}
            </tbody>
        </table>
        <div id="laypage"></div>
    </div>

</div>
<!--header-->
{include file="public/_footer" /}

<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript" src="__STATIC__/hadmin/lib/My97DatePicker/4.8/WdatePicker.js"></script>
<script type="text/javascript" src="__STATIC__/hadmin/lib/laypage/1.2/laypage.js"></script>
<script type="text/javascript">
    var url = '{url("news/index")}';
    laypage({
        cont: 'laypage',
        pages: '{$pageTotal}',
        skin: '#5FB878',
        curr: '{$curr}',
        jump: function (e, first) {
            if (!first) {
                location.href = url + '?page=' + e.curr;
            }
        }
    })

</script>
<style>
    .imooc-app .pagination li {
        display: inline;
        padding-left: 10px;
    }

    .pagination .active {
        color: red
    }

    .pagination .disabled {
        color: #888888
    }
</style>
</body>
</html>
222.png

相关文章

网友评论

      本文标题:[PHP高可用后端]①⑥--列表页面开发之引入laypage

      本文链接:https://www.haomeiwen.com/subject/jqhpmxtx.html