laravel自定义分页页码样式

在使用laravel分页时候,默认的分页样式不是自己想要的,需要自己修改。

默认样式是 < 1 2 3 4 5 6 7 8 9 10 11 12 13 14 … 98 99 >

这个样式太丑了,而且我不想要这么多的 页码,只想实现如下的页码

< 1 2 3 4 5 6 7 > < 6 7 8 9 10 11 > < 11 12 13 14 15 16 17 18 19 20 >

php原生代码

<?php 
//分页显示页面数量,取值范围 3-n
$paging_number = 7;
if($paging_number<3){
	$paging_number = 3;
}
//当前页
$paging_current_page = $_GET['p'];
//共几页
$paging_last_page = 15;
 
if(($paging_number%2) == 0){
	if($paging_last_page <= $paging_number){
		$paging_start = 1;
		$paging_end = $paging_last_page;
	}else if($paging_current_page < ($paging_number/2+1)){
		$paging_start = 1;
		$paging_end = $paging_number;
	}else if($paging_current_page >= ($paging_number/2+1) && (($paging_current_page + ($paging_number/2 - 1)) <= $paging_last_page)){
		$paging_start = $paging_current_page - ($paging_number/2);
		$paging_end = $paging_current_page + ($paging_number/2 - 1);
	}else{
		$paging_start = $paging_last_page - $paging_number + 1;
		$paging_end = $paging_last_page;
	}
}else{
	if($paging_last_page <= $paging_number){
		$paging_start = 1;
		$paging_end = $paging_last_page;
	}else if($paging_current_page < ceil($paging_number/2)){
		$paging_start = 1;
		$paging_end = $paging_number;
	}else if($paging_current_page >= ceil($paging_number/2) && (($paging_current_page + floor($paging_number/2)) <= $paging_last_page)){
		$paging_start = $paging_current_page - floor($paging_number/2);
		$paging_end = $paging_current_page + floor($paging_number/2);
	}else{
		$paging_start = $paging_last_page - ($paging_number - 1);
		$paging_end = $paging_last_page;
	}
}
 
for($i=$paging_start;$i<=$paging_end;$i++){
	
	if($i != $paging_current_page){
		echo "<span><a href='test.php?p=".$i."'>".$i."</a></span>  ";
	}else{
		echo "<span style='color:red;'><a href='test.php?p=".$i."'><b>$i</b></a></span>  ";
	}
}

laravel分页模板代码
@if ($paginator->hasPages())
@php
//指定显示的页码数量,取值范围3-n
$paging_number = 10;
if($paging_number<3){
    $paging_number = 3;
}
//当前页
$paging_current_page = $paginator->currentPage();
//共几页
$paging_last_page = $paginator->lastPage();
if(($paging_number%2) == 0){
    if($paging_last_page <= $paging_number){
        $paging_start = 1;
        $paging_end = $paging_last_page;
    }else if($paging_current_page < ($paging_number/2+1)){
        $paging_start = 1;
        $paging_end = $paging_number;
    }else if($paging_current_page >= ($paging_number/2+1) && (($paging_current_page + ($paging_number/2 - 1)) <= $paging_last_page)){
        $paging_start = $paging_current_page - ($paging_number/2);
        $paging_end = $paging_current_page + ($paging_number/2 - 1);
    }else{
        $paging_start = $paging_last_page - $paging_number + 1;
        $paging_end = $paging_last_page;
    }
}else{
    if($paging_last_page <= $paging_number){
        $paging_start = 1;
        $paging_end = $paging_last_page;
    }else if($paging_current_page < ceil($paging_number/2)){
        $paging_start = 1;
        $paging_end = $paging_number;
    }else if($paging_current_page >= ceil($paging_number/2) && (($paging_current_page + floor($paging_number/2)) <= $paging_last_page)){
        $paging_start = $paging_current_page - floor($paging_number/2);
        $paging_end = $paging_current_page + floor($paging_number/2);
    }else{
        $paging_start = $paging_last_page - ($paging_number - 1);
        $paging_end = $paging_last_page;
    }
}
@endphp
    <ul class="pagination">
        {{-- Previous Page Link --}}
        @if ($paginator->onFirstPage())
            <li class="disabled"><span>«</span></li>
        @else
            <li><a href="{{ $paginator->previousPageUrl() }}" rel="prev">«</a></li>
        @endif
 
        {{-- Pagination Elements --}}
        @for ($i = $paging_start; $i <= $paging_end; $i++)
            @if ($i == $paginator->currentPage())
                <li class="active"><span>{{ $i }}</span></li>
            @else
                <li><a href="{{ $paginator->url($i) }}">{{ $i }}</a></li>
            @endif
        @endfor
 
        {{-- Next Page Link --}}
        @if ($paginator->hasMorePages())
            <li><a href="{{ $paginator->nextPageUrl() }}" rel="next">»</a></li>
        @else
            <li class="disabled"><span>»</span></li>
        @endif
    </ul>
@endif

将criterion.blade.php模板放到模板目录,其他模板页面渲染语法

{{ $data->links(‘criterion’) }}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel 中,我们可以通过自定义 Paginator 类来实现自定义分页数据结构。 首先,我们需要创建一个新的 Paginator 类,可以在 `app` 目录下创建一个 `CustomPaginator.php` 文件。在这个类中,我们需要继承 Laravel 内置的 Paginator 类,并实现 `__construct` 和 `toArray` 方法。例如: ```php <?php namespace App; use Illuminate\Pagination\Paginator; class CustomPaginator extends Paginator { public function __construct($items, $perPage, $currentPage, $options = []) { parent::__construct($items, $perPage, $currentPage, $options); } public function toArray() { return [ 'data' => $this->items->toArray(), 'pagination' => [ 'total' => $this->total(), 'count' => $this->count(), 'per_page' => $this->perPage(), 'current_page' => $this->currentPage(), 'total_pages' => $this->lastPage() ] ]; } } ``` 在上面的代码中,我们在 `toArray` 方法中定义了自定义分页数据结构,包括数据和分页信息。其中,`data` 表示当前页的数据,`pagination` 表示分页信息。你可以根据自己的需求修改这个数据结构。 然后,在使用自定义分页数据结构的时候,可以使用 `CustomPaginator` 类来实现。例如: ```php use App\CustomPaginator; $items = DB::table('users')->paginate(15); $customPaginator = new CustomPaginator($items->items(), $items->perPage(), $items->currentPage()); $result = $customPaginator->toArray(); ``` 在上面的代码中,我们先使用内置的 `paginate` 方法来获取分页数据,然后将其转换成自定义分页数据结构。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值