Laravel5.1 与 Laypage 结合进行分页

路由

Route::match(array(‘get‘,‘post‘),‘/orm‘,‘[email protected]‘);

控制器

<?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 + ‘&current_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>

  效果图

时间: 2024-10-22 13:00:15

Laravel5.1 与 Laypage 结合进行分页的相关文章

TP3.23 与Laypage 结合进行分页 增删改查

控制器 <?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { /** *@brief 查询 ****/ public function index(){ $choose = I('choose','-6'); $c['easy_hard'] = $choose; $type=I('typeid',''); $nowpage=I('page',1); if(

laypage分页插件的使用

laypage是用于分页的插件,该插件通过js请求分页数据 1.载入js文件 <script type="text/javascript" src="__STATIC__/hadmin/lib/laypage/1.2/laypage.js"></script>2.在页面中显示分页信息的地方插入标记<div id="laypage"></div>3.添加js <script type="

关于前端的东西(未完待续)

一个后端来说前端的事实在是没有金刚钻要拦瓷器活,不过这也是没办法的事(哪个公司不想要个全栈?). 首推layer家族的各种产品:layer:漂亮的弹层插件,laytpl:快速的模板渲染引擎,laydate:漂亮又简单好用的日期控件,layPage:华丽的分页插件,layIM:强大的聊天插件. bootstrap家族,众人皆知的前端框架. jquery,同上 富文本框编辑器:kindEditor,CKEditor,UEditor(最好用的编辑器) easyui,jqueryui.

Layui的一点小理解(上)

首先声明这是个人的一点理解,如有不对之处请指正,以下的例子有在官网上看到的,有的是自己写的.还是老规矩最后会附上官网的,如有不明白之处,请查看文档或留言. 既然说Layui,当然要简单的介绍以下什么是layui啊!下面是官方的解释: Layui 是一款采用自身模块规范编写的国产前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到API的每一处细节都经过精心雕琢,非常适合界面的快速开发.layui还很年轻

layui 底层基础

全局配置 方法:layui.config(options) 你可以在使用模块之前,全局化配置一些参数,尽管大部分时候它不是必须的.所以我们目前提供的全局配置项非常少,这也是为了减少一些不必要的工作,尽可能让使用变得更简单.目前支持的全局配置项如下: codelayui.code layui.config({ dir: '/res/layui/' //layui.js 所在路径(注意,如果是script单独引入layui.js,无需设定该参数.),一般情况下可以无视 ,version: false

laravel5自定义分页

laravel5分页处理与laravel4略有区别,laravel5提供了更方便的处理方式,可以方便满足不同分页展示. laravel4自定义分页:http://php2012web.blog.51cto.com/5585213/1539601 laravel分页处理有分两个入口,即两个处理对象: DB操作分页       Illuminate\Database\Query\Builder ORM操作分页   Illuminate\Database\Eloquent\Builder DB操作分页

laypage分页源码

layui.use(['laypage', 'layer'], function(){     var laypage = layui.laypage         ,layer = layui.layer;     var $ = layui.$;         var total_page = $("#total_page").val();         laypage.render({             elem: 'demo1'             ,limit

LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页

LayUI分页,LayUI动态分页,LayUI laypage分页,LayUI laypage刷新当前页 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ?Copyright 蕃薯耀 2017年8月1日 http://www.cnblogs.com/fanshuyao/ 效果图: 一.引用js依赖

laypage分页

1.分页 laypage({ cont:$("#page"), //容器,仅支持id名\原生DOM对象,jquery对象 pages:10, //总页数 skip:true, //是否开启跳页 groups:5, //连续显示分页数 first:1, //首页 last:10, //尾页 skin:'#fff', //皮肤 curr:2, //当前页 jump:function(obj,first){ //触发分页后的回调 //触发分页后的回调,并传递当前页obj.cuur if(!f