Laravel5.1 与 Laypage 结合进行分页
demo地址:http://lara.ytlwin.top/orm
路由
Route::match(array('get','post'),'/orm','StuController@orm');
控制器
<?php namespace App\Http\Controllers; use Illuminate\Http\Request;
use App\Http\Requests;
use App\User; //user表的模型
use App\Phone; //phone表的模型 class StuController extends Controller
{
/*
*@brief 搜索 分页
*/
private $current_page; //私有属性 当前页
private $page_size = 5; //私有属性 每页条数 public function __construct(Request $request) {
$this->current_page = $request->input('current_page', 1);
}
public function orm(Request $request)
{
$search_text = $request->input('search_text','');
$pay_type = intval($request->input('pay_type',6));
if($search_text == '')
{
$count = User::join('phone','phone.user_id','=','user.user_id','left')->count();
$page_count = ceil($count/$this->page_size);
// dd($page_count);
$data = User::join('phone','phone.user_id','=','user.user_id','left')->get();
}else{
// 关联
$count = User::join('phone','phone.user_id','=','user.user_id','left')->with('phone')->where('username','like','%'.$search_text.'%')->count();
$page_count = ceil($count/$this->page_size);
$data = User::join('phone','phone.user_id','=','user.user_id','left')->with('phone')->where('username','like','%'.$search_text.'%')->get();
} if($pay_type !== 6 )
{
$data = collect($data) -> where('pay_type',$pay_type); //对已有数据进行处理支付类型筛选
} $count = $data->count(); //多少数据
$page_count = ceil($count/$this->page_size); //多少页 //collect和slice切片选择页数内容
$data = collect($data)->slice(($this->current_page -1)*$this->page_size,$this->page_size); return view('phone',compact('data','search_text','pay_type'))
->with('current_page', $this->current_page)
->with('page_count', $page_count);
} }
视图层
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>电话联系人</title>
<script type="text/javascript" src="{{asset('/jquery.min.js')}}"></script>
<script type="text/javascript" src="{{asset('/laypage/laypage.js')}}"></script>
<script type="text/javascript" src="{{asset('/layer/layer.js')}}"></script> </head>
<body>
<input type="text" name="search_text" id="search_text" placeholder="请输入姓名搜索" @if($search_text != '') value="{{$search_text}} @endif"><button name="search_btn" id="search_btn" type="submit">搜索</button>
<span>
<select name="pay_type" id="pay_type" onchange="pay()">
<option value="6" @if($pay_type==6)selected="selected" @endif>全部</option>
<option value="0" @if($pay_type==0)selected="selected" @endif>在线支付</option>
<option value="1" @if($pay_type==1)selected="selected" @endif>快递支付</option>
</select>
</span>
<div style="height:15px;"></div>
<table>
<thead>
<tr>
<th width="40">选择</th>
<th width="40">序号</th>
<th width="40">姓名</th>
<th width="60">手机</th>
<th width="80">支付方式</th>
<th width="80">发货状态</th>
</tr>
</thead> @foreach($data as $key=>$d)
<tbody>
<tr>
<th width="40"><input type="checkbox" name="like[]"></th>
<th width="40">{{$key+1}}</th>
<th width="40">{{$d->username}}</th>
<th width="60">{{$d->phone}}</th>
<th width="120">
@if($d->pay_type==0)
在线支付
@endif
@if($d->pay_type==1)
快递到付
@endif
</th>
<th width="60">
@if($d->is_send==0)
未发
@endif
@if($d->is_send==1)
已发
@endif
</th>
</tr>
</tbody>
@endforeach </table>
<div class="row cl" style="margin-top: 20px;float:left;" >
<label class="form-label col-1 text-l" id="record">共 {{$page_count}} 页</label>
<div class="formControls col-11 text-r" id="page" style="float:left;">
</div>
</div> <script type="text/javascript">
// alert($);
var search_btn = $('#search_btn');
var search_text = $('#search_text'); var pay_type = ''; $(function(){
if (parseInt("{{$page_count}}") > 0) {
pay_type = $('#pay_type option:selected').val();
laypage({
cont: 'page',
pages: '{{$page_count}}', //可以叫服务端把总页数放在某一个隐藏域,再获取。假设我们获取到的是18
curr: function() { //通过url获取当前页,也可以同上(pages)方式获取
var page = "{{$current_page}}";
return page;
}(),
jump: function(e, first) { //触发分页后的回调
if (!first) { //一定要加此判断,否则初始时会无限刷新
location.href = GetUrlRelativePath() + '?search_text=' + search_text.val().trim() + '&pay_type=' + pay_type + '¤t_page=' + e.curr;
}
}
});
}
}); search_btn.click(function(){
pay_type = $('#pay_type option:selected').val();
location.href = GetUrlRelativePath() + '?search_text=' + search_text.val().trim()+ '&pay_type=' + pay_type; //重定向到地址 带参数进行查询
});
function pay()
{
pay_type = $('#pay_type option:selected').val();
location.href = GetUrlRelativePath() + '?search_text=' + search_text.val().trim() + '&pay_type=' + pay_type;
} console.log(GetUrlRelativePath());
function GetUrlRelativePath()
{
var url = document.location.toString(); //得出当前地址
var arrUrl = url.split("//"); //以//为标识 分割为两个数组 [http:,haha.com/orm] var start = arrUrl[1].indexOf("/"); // 下标为1 的即为去除http头的 域名部分 indexOf('') 某个字符首次出现的位置 从0开始计数 / 在第8
var relUrl = arrUrl[1].substring(start); //substring(n) 去除0-(n-1) 的字符串 if(relUrl.indexOf("?") != -1)
{
relUrl = relUrl.split("?")[0]; //去除参数
}
return relUrl;
} //得出地址 </script> </body>
</html>
效果图

Laravel5.1 与 Laypage 结合进行分页的更多相关文章
- TP3.23 与Laypage 结合进行分页
demo地址:http://tp.ytlwin.top 控制器 <?php namespace Home\Controller; use Think\Controller; class Inde ...
- laypage分页控件使用方法
laypage是一款非常简单易用的分页控件,由于最近项目中使用到了,简单记录一下使用方法 1.引入laypage所需的js和css文件 <link href="js/laypage/1 ...
- Flask学习之旅--分页功能:分别使用 flask--pagination 和分页插件 layPage
一.前言 现在开发一个网站,分页是一个很常见的功能了,尤其是当数据达到一定量的时候,如果都显示在页面上,会造成页面过长而影响用户体验,除此之外,还可能出现加载过慢等问题.因此,分页就很有必要了. 分页 ...
- 基于layPage分页插件浅析两种分页方式
最近在开发过程中经常用到分页,今天挤出些时间来捋一捋自己的经验 在web开发中,一般显示数据列表页时,我们会用到分页控件来显示数据.采用分页一般基于两种不同的需求,一种是数据量不算很大,但是在页面展示 ...
- laypage 物理分页与逻辑分页实例
前言 以下介绍摘自 layui官网laypage layPage 致力于提供极致的分页逻辑,既可轻松胜任异步分页,也可作为页面刷新式分页.自 layui 2.0 开始,无论是从核心代码还是API设计, ...
- layui分页
毕业已经两年,期间经历了很多.一个人欢笑与哭泣,在墙角.在路边.在床上.每天搭乘首班车来到公司,每天无数次反省自己,每天每天再问自己为什么活着. 一.下载并引用css和js 地址:点我 <lin ...
- layui分页的使用心得
// 执行页面加载的函数 loadData(1) // 每页条数 var limit = 5; // 渲染页面 function loadData(curr){ $.ajax({ type:" ...
- Layui的一点小理解(上)
首先声明这是个人的一点理解,如有不对之处请指正,以下的例子有在官网上看到的,有的是自己写的.还是老规矩最后会附上官网的,如有不明白之处,请查看文档或留言. 既然说Layui,当然要简单的介绍以下什么是 ...
- layui 的基本使用介绍
全局配置 layui.config({ dir: '/res/layui/' //layui.js 所在路径(注意,如果是script单独引入layui.js,无需设定该参数.),一般情况下可以无视 ...
随机推荐
- putty的小兄弟psftp的使用
1.双击运行psftp.exe 双击直接运行psftp.exe程序 2.open目标地址 运行psftp后,使用open指令连接目标机器,如: psftp>open 127.0.0.1 3.输入 ...
- Shell 编程(函数)
声明函数 demoFun(){ echo "这是我的第一个 shell 函数!" } 函数名(){ ...函数体 } 在Shell中,调用函数时可以向其传递参数.在函数体内部,通过 ...
- 开发MIS系统的相关技术
Java Web应用的核心技术包括以下几个方面:● JSP:进行输入和输出的基本手段.● JavaBean:完成功能的处理.● Servlet:对应用的流程进行控制.● JDBC:是与数据库进行交互不 ...
- NB-IoT移远BC95使用小结
移远-BC95-测试前准备 1. 设备连接主串口,串口调试助手波特率使用9600,选择对应的端口号.在串口调试助手上输入AT发送,查看是否有OK返回. 如果想修改波特可以通过下面的AT来修改 AT+ ...
- react-native android打包
看了官网测试的是可以的,自己整理下,方便后面查看 先是生产安卓证书,安卓证书生成,点这里.这里掠过 生成安卓证书,记住2个密码 秘钥库口令 和 私钥密码 1.然后把你生成的安卓证书放到文件放到你工程中 ...
- 20165304《Java程序设计》第五周学习总结
教材学习内容总结 第七章 1.内部类 注意内部类和外嵌类的关系: 外嵌类的成员变量和方法在内部类有效 内部类的类体不可以声明static变量和方法.外嵌类的类体可以用内部类声明对象. 内部类仅供它的外 ...
- web前端安全的三个关键点
一.浏览器的同源策略 同源策略:不同域的客户端脚本在未经授权的情况下不能读写对方的资源. 这里有几个关键词:域.脚本.授权.读写.资源 1.同域要求两个站点:同协议.同域名.同端口.下表展示了所列站点 ...
- harbor仓库镜像的删除
harbor仓库镜像的删除 刚开始自己摸索了下,直接webui界面删除后,发现仓库空间未释放 上传之前仓库空间占用为 上传之后仓库空间占用为 在webui界面上删除镜像后 查看大小 依旧为286m,到 ...
- [ SHELL编程 ] 远程服务器传输文件
在shell编程中经常需要获取远程服务器文件.手工操作中使用scp命令完成.为避免脚本执行scp输入密码进行交互,需先建立本机服务器当前用户和远程服务器指定用户的信任关系.具体代码见操作实例,重点关注 ...
- match()方法解析
match()方法支持正则表达式的String对象的方法. 上篇我说了search()方法,也支持正则表达式的String对象,那么match()方法跟search()方法有什么不同呢?我们来看看. ...