文档章节

Laravel5学生成绩管理系统-05-分页

Corwien
 Corwien
发布于 2016/05/21 12:06
字数 1319
阅读 105
收藏 2

在其它的框架中,分页是非常让人苦恼的。而在 Laravel 中却是很轻而易举的。 Laravel 可以快速生成基于当前页面链接的智能「范围」,并且生成的 HTML 兼容于 Bootstrap CSS 框架。本项目中,我们将利用laravel的分页功能,来轻松处理学生列表的分页。

强烈建议新手或不熟练的朋友在做分页时先仔细的阅读下官方文档。官方文档-分页

#基本使用 ##对查询语句构造器进行分页 有几种方法可以对项目进行分页。最简单的是使用 paginate 方法。在使用 查询语句构造器 或是 Eloquent 查找 时。由 Laravel 提供的 paginate 方法能够自动判定当前页面正确的数量限制和偏移数。默认状况下,当前页数由 HTTP 请求所带的** ?page **参数来决定。当然,该值由 Laravel 自动检测,并自动插入由分页器生成的链接。

首先,让我们来看看如何在数据库查找时使用 paginate 方法。在这个例子中,传递给 paginate 唯一的参数是你想在「每页」显示的数据数。我们在此指定每页显示 15 条数据:

<?php

namespace App\Http\Controllers;

use DB;
use App\Http\Controllers\Controller;

class UserController extends Controller
{
    /**
     * 显示应用的所有用户。
     *
     * @return Response
     */
    public function index()
    {
        $users = DB::table('users')->paginate(15);

        return view('user.index', ['users' => $users]);
    }
}

注意:目前, Laravel 的分页无法有效操作含有 groupBy 的语句。如果你需要对使用 groupBy 的结果做分页,建议你先进行数据库查找后再手动制作分页。

##「简易分页」 如果在你的视图中只需要显示简单的「下一步」和「上一步」链接,你可以选择使用 simplePaginate 方法来进行更高效的查找。当你不需要在页面上显示页码时,这对于大数据来说将会非常有用:

$users = DB::table('users')->simplePaginate(15);

##对 Eloquent 模型进行分页 你也可以对 Eloquent 进行分页。在这个例子中,我们将对 User 模型进行分页并且设置其每页有 15 条数据。如你所见,语法跟查询语句构造器的分页语法几乎一样:

$users = App\User::paginate(15);

当然,你也可以对 paginate 设置其它限制的查找,如 where 条件:

$users = User::where('votes', '>', 100)->paginate(15);

或者也可以在使用 Eloquent 模型进行分页时使用 simplePaginate 方法:

$users = User::where('votes', '>', 100)->simplePaginate(15);

##将分页结果显示在视图中 当在查询语句构造器或 Eloquent 中使用 simplePaginate 方法或 paginate 方法时,你会得到一个分页器的实例。当使用 paginate 方法时,将得到 Illuminate\Pagination\LengthAwarePaginator 实例。当使用 simplePaginate 方法时,则会得到 Illuminate\Pagination\Paginator 实例。这些对象提供几种方法用来描述结果集。除了这些辅助函数之外,分页器的实例也是个迭代器,并且可以像数组一样来使用循环取值。

总之,一旦你获取到结果,就可以对结果进行显示,并使用 Blade 模板渲染页面的链接:

<div class="container">
    @foreach ($users as $user)
        {{ $user->name }}
    @endforeach
</div>

{!! $users->render() !!}

render 方法将给予查找结果中其它页面的链接。每一个链接中都已经包含正确的 ?page 查找字符串变量。请记住,由 render 方法生成的 HTML 兼容于 Bootstrap CSS 框架。

**注意:**当在 Blade 模版中使用 render 方法时,一定要使用 {! !} 语法,这样 HTML 链接才不会被转义。

##加入参数到分页链接中 你可以使用 appends 方法添加所需要的参数到分页链接中。例如,要加入 &sort=votes 到每个分页链接时,你应该这样使用 appends 方法:

{!! $users->appends(['sort' => 'votes'])->render() !!}

OK,以上就为Laravel分页的核心内容,先复习到这里,详情参考*官方文档-分页* ,下面在我们的项目中使用分页方法: #项目实战 ##1、获取学生列表,并分页

 /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        // 获取学生列表
        $ret = UsersInfo::where('is_admin', 0);

        // 获取总数
        $count = $ret->count();

        // 分页
        $users = $ret->paginate(2);
        return view('Admin.index', compact('users', 'count'));
    }

##2、将分页结果显示在视图 Admin/index.blade.php

@extends('master')    {{-- 继承master模版 --}}

@section('title')
    管理员
@stop

@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-10">

                @include('errors.list')

### 学生信息表

                <table class="table table-hover">
                    <tr>
                        <td>学号</td>
                        <td>姓名</td>
                        <td>性别</td>
                        <td>手机</td>
                        <td>班级</td>
                        <td>邮箱</td>
                        <td>操作</td>
                    </tr>
                    @if (count($users))
                        @foreach ($users as $user)
                            <tr>
                                <td>{{ $user->id }}</td>
                                <td>{{ $user->name }}</td>
                                <td>{{ $user->sex }}</td>
                                <td>{{ $user->phone }}</td>
                                <td>{{ $user->pro_class }}</td>
                                <td>{{ $user->email }}</td>
                                <td>
                                    <button class="btn btn-sm btn-info" data-toggle="modal" data-target="#myModal{{$user->id}}">更新分数</button>
                                    <form action="{{ url('admin/'.$user->id) }}" style='display: inline' method="post">
                                        <input type="hidden" name="_method" value="DELETE">
                                        <input type="hidden" name="_token" value="{{csrf_token()}}">
                                        <button class="btn btn-sm btn-danger" onclick="return confirm('确定删除?')">删除</button>
                                    </form>
                                </td>
                            </tr>

                            read1

                        @endforeach
                    @else

# 没有学生名单,请管理员添加

                    @endif
                </table>
                {{-- 分页 --}}}
                <?php echo $users->render(); ?>
            </div>
            read2
        </div>

    </div>
@stop

分页结果: tu

我们可以看到,Laravel的分页使用非常简单,在控制器中调用分页方法**$ret->paginate(2);,然后在视图中用<?php echo $users->render(); ?> 输出分页列表**渲染即可。

© 著作权归作者所有

Corwien
粉丝 27
博文 149
码字总数 115164
作品 0
广州
程序员
私信 提问
Laravel5学生成绩管理系统-07-添加侧边栏

可能看到上面图片中的右侧栏吧,我们先把它完成,然后一一实现它的功能.将index视图文件中的read2替换成: read2 => @include('Admin.right_bar') admin/index.blade.php 接着新建Admin/right_b...

Corwien
2016/05/22
75
0
急求,高手帮忙,成绩管理系统

使用c++语言编写 设计题目:6、成绩管理系统 (限最多5人完成) 现有学生成绩信息,内容如下 姓名 学号 语文 数学 英语 张明明 01 67 78 82 李成友 02 78 91 88 张辉灿 03 68 82 56 王露 04...

wangjungang293
2010/06/11
412
12
Laravel5学生成绩管理系统-06-资源控制器删除学生

接下来我们做删除功能,可以看到删除按钮提交到 http://localhost:8000/admin/2010300005, form表单里面有个值为DELETE的隐藏输入域,告诉路由,这个请求对应这资源控制器的 destory 方法,我们来...

Corwien
2016/05/21
59
0
laravel5自定义分页

laravel5分页处理与laravel4略有区别,laravel5提供了更方便的处理方式,可以方便满足不同分页展示。 laravel4自定义分页:http://php2012web.blog.51cto.com/5585213/1539601 laravel分页处...

ttlxihuan
2016/09/26
0
0
Laravel5学生成绩管理系统-04-Eloquent关联

数据表之间经常会互相进行关联。例如,一篇博客文章可能会有多条评论,或是一张订单可能对应一个下单客户。Eloquent 让管理和处理这些关联变得很容易,同时也支持多种类型的关联: 一对一# 一...

Corwien
2016/05/07
79
0

没有更多内容

加载失败,请刷新页面

加载更多

06_CSS入门和高级技巧(4)

复习 CSS : 负责样式层,层叠式样式表cascading style sheet。CSS2.1,最新版本CSS3。 CSS选择器: 选择哪些元素加样式。基本选择3种:标签p、id选择器#id、class选择器.;高级选择器4种:后...

王裕杰
17分钟前
1
0
IT兄弟连 Java语法教程 变量2

变量的作用域和生命周期 到目前为止,使用的所有变量都是在main()方法开始时声明的,然而,Java允许在任何代码块(代码块以开花括号开始,以闭花括号结束)中声明变量,代码块定义了作用域。...

老码农的一亩三分地
54分钟前
3
0
OSChina 周二乱弹 —— 这份躺着挣钱的工作

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @巴拉迪维 :既然无法言说,不如一笑而过;既然无法释怀,不如安然自若。#今日歌曲推荐# 《Godi》- Lube 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
今天
1K
21
Android沉浸式的两种方法

隐藏状态栏 一个Android应用程序的界面上其实是有很多系统元素的,观察下图: 而打造沉浸式模式的用户体验,就是要将这些系统元素全部隐藏,只留下主体内容部分。 怎么做呢,郭霖的一个Funct...

天王盖地虎626
今天
9
0
PostgreSQL build

https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=lumpsucker&dt=2019-06-23%2020%3A57%3A27...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部