laravel 5.4中手动创建分页

这里是参考的的链接https://blog.csdn.net/hxx_yang/article/details/51753134

 

use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Pagination\Paginator;
public function index(Request $request)
{
## 获取数据
$menus=DB::table('sys_menu')->get();
// $menusPage=DB::table('sys_menu')->paginate(10);

$sysMenu = new SysMenu();
$menusTree = $sysMenu->getTreeMenu($menus, $p_id = 0, $level = 0);

$perPage = 10;
if ($request->has('page')) {
$current_page = $request->input('page');
$current_page = $current_page <= 0 ? 1 :$current_page;
} else {
$current_page = 1;
}

$item = array_slice($menusTree, ($current_page-1)*$perPage, $perPage); //注释1
$total = count($menusTree);

$paginator =new LengthAwarePaginator($item, $total, $perPage, $current_page, [
'path' => Paginator::resolveCurrentPath(), //注释2
'pageName' => 'page',
]);

$menuslist = $paginator->toArray()['data'];

return view('menu.index', compact('menuslist', 'paginator'));

}
这里是核心代码
主要是因为对数据取出的数据进行了二次处理 或者是 groupby出来的数据 进行分页
blade模板的页面
@foreach ($menuslist as $menu)
<tr>
<td class="text-center">
<input type="checkbox" name="selected[]" value="{{$menu->id}}"/>
</td>
<td class="text-left">
@if($menu->level == 1)
&nbsp;&nbsp;&nbsp;&nbsp;
@elseif($menu->level == 2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@elseif($menu->level == 3)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
@endif
{{$menu->name}}</td>
<td class="text-left">{{$menu->name_path}}</td>
<td class="text-left">{{$menu->href}}</td>
<td class="text-left">{{$menu->remarks}}</td>

<td class="text-right">
<a href="/menu/edit?id={{$menu->id}}" data-toggle="tooltip" title="编辑"
class="btn btn-primary">编辑
</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</form>
<div class="pagers ">
{!! $paginator->render() !!}
</div>


posted @ 2018-04-17 10:11  段佳伟  阅读(454)  评论(0编辑  收藏  举报