larael框架分页php,laravel框架中关于自定义分页效果的实例分析

这篇文章主要为大家详细介绍了laravel自定义分页实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

对于laravel分页,自带一个paginate的方法,很好用,但是也是有局限性的。

所以自己针对于此写了一个自己的分页,具体代码如下

namespace ...;

use ...;

/**

* 自定义分页类,适合少数据的查询,多数据的时候不推荐

* Class CustomPaginate

* @package App\Tools\Paginate

*/

class CustomPaginate

{

/**

* 自定义数组分页

* @param $data = 返回结果

* @param $page

* @param $limit

* @return mixed

*/

public static function paginate($data, $page = 1, $limit = 10)

{

if (!is_numeric($page) || !is_numeric($limit)) {

return false;

}

$count = count($data);

$data = array_slice($data, ($page - 1) * $limit, $limit);

return new LengthAwarePaginator($data, $count, $limit, $page);

}

/**

* 参数解释 对外暴露的方法

* @param $data = array|collection 切记只支持这两种

* @param $page = 当前页

* @param $limit = 每一页展示几条

* @return array|false

* 返回结果为数组

* 调用实例: CustomPaginate::paginateToArray($data, $request->page, $request->limit);

*/

public static function paginateToArray($data, $page = 1, $limit = 10)

{

$isValidate = self::validate($data, $page, $limit); //验证

if ($isValidate === false) {

return false;

}

$res = self::paginate($data, $page, $limit)->toArray(); //分页数据转换为数组

//上一页 || 下一页 => path

if ($res['prev_page_url'] != null) {

$prev_page = $page - 1;

$res['prev_page_url'] = Paginator::resolveCurrentPath() . "?page=" . $prev_page . "&limit=" . $limit;

}

if ($res['next_page_url'] != null) {

$next_page = $page + 1;

$res['next_page_url'] = Paginator::resolveCurrentPath() . "?page=" . $next_page . "&limit=" . $limit;

}

return $res;

}

/**

* 验证参数是否合法

*/

public static function validate(&$data, &$page = 1, &$limit = 10)

{

$page = empty($page) ? 1 : $page;

$limit = empty($limit) ? 10 : $limit;

if (!is_array($data) && !$data instanceof Collection) {

return false;//"自定义分页方法只支持数组数据和集合数据";

}

if (!is_numeric($page) || !is_numeric($limit)) {

return false;//"page limit 参数只支持数字";

}

if ($data instanceof Collection) {

return $data = $data->toArray();

}

return $data;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值